smarteditor2 code lint

This commit is contained in:
Amberstone 2024-09-20 20:30:44 +09:00
parent bcf53b3a41
commit 4cc841ced1
Signed by: amber
GPG key ID: 094B0E55F98D8BF1
15 changed files with 28766 additions and 26876 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,30 +1,30 @@
(function($){ (function ($) {
$(document).ready(function() { $(document).ready(function () {
$(".smarteditor2").each( function(index){ $(".smarteditor2").each(function (index) {
var get_id = $(this).attr("id"); var get_id = $(this).attr("id");
if( !get_id || $(this).prop("nodeName") != 'TEXTAREA' ) return true; if (!get_id || $(this).prop("nodeName") != 'TEXTAREA') return true;
nhn.husky.EZCreator.createInIFrame({ nhn.husky.EZCreator.createInIFrame({
oAppRef: oEditors, oAppRef: oEditors,
elPlaceHolder: get_id, elPlaceHolder: get_id,
sSkinURI: g5_editor_url+"/SmartEditor2Skin.html", sSkinURI: g5_editor_url + "/SmartEditor2Skin.html",
htParams : { htParams: {
bUseToolbar : true, // 툴바 사용 여부 (true:사용/ false:사용하지 않음) bUseToolbar: true, // 툴바 사용 여부 (true:사용/ false:사용하지 않음)
bUseVerticalResizer : true, // 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음) bUseVerticalResizer: true, // 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
bUseModeChanger : true, // 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음) bUseModeChanger: true, // 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
bSkipXssFilter : true, // client-side xss filter 무시 여부 (true:사용하지 않음 / 그외:사용) bSkipXssFilter: true, // client-side xss filter 무시 여부 (true:사용하지 않음 / 그외:사용)
//aAdditionalFontList : aAdditionalFontSet, // 추가 글꼴 목록 //aAdditionalFontList : aAdditionalFontSet, // 추가 글꼴 목록
fOnBeforeUnload : function(){ fOnBeforeUnload: function () {
//alert("완료!"); //alert("완료!");
} }
}, //boolean }, //boolean
fOnAppLoad : function(){ fOnAppLoad: function () {
//예제 코드 //예제 코드
//oEditors.getById["ir1"].exec("PASTE_HTML", ["로딩이 완료된 후에 본문에 삽입되는 text입니다."]); //oEditors.getById["ir1"].exec("PASTE_HTML", ["로딩이 완료된 후에 본문에 삽입되는 text입니다."]);
}, },
fCreator: "createSEditor2" fCreator: "createSEditor2"
}); });
}); });
}); });
})(jQuery); })(jQuery);

View file

@ -1,24 +1,123 @@
@charset "UTF-8"; @charset "UTF-8";
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */ /* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
/* COMMON */ /* COMMON */
body,.se2_inputarea{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5} body,
/* body,.se2_inputarea,.se2_inputarea th,.se2_inputarea td{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5;color:#666} */ .se2_inputarea {
.se2_inputarea p,.se2_inputarea br{margin:0;padding:0} margin: 0;
.se2_inputarea{margin:15px;word-wrap:break-word;*word-wrap:normal;*word-break:break-all} padding: 0;
.se2_inputarea td{word-break:break-all} font-family: '돋움', Dotum, Helvetica, Sans-serif;
.se2_inputarea_890{width:741px;margin:20px 0 10px 64px} font-size: 12px;
.se2_inputarea_698{width:548px;margin:20px 0 10px 64px} line-height: 1.5
@media screen and (-webkit-min-device-pixel-ratio: 0) {
.se2_inputarea td:empty:after,.se2_inputarea td > p:empty:after{content:"\00A0";line-height:1}
} }
/* body,.se2_inputarea,.se2_inputarea th,.se2_inputarea td{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5;color:#666} */
.se2_inputarea p,
.se2_inputarea br {
margin: 0;
padding: 0
}
.se2_inputarea {
margin: 15px;
word-wrap: break-word;
*word-wrap: normal;
*word-break: break-all
}
.se2_inputarea td {
word-break: break-all
}
.se2_inputarea_890 {
width: 741px;
margin: 20px 0 10px 64px
}
.se2_inputarea_698 {
width: 548px;
margin: 20px 0 10px 64px
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
.se2_inputarea td:empty:after,
.se2_inputarea td>p:empty:after {
content: "\00A0";
line-height: 1
}
}
/* TEXT_TOOLBAR : QUOTE */ /* TEXT_TOOLBAR : QUOTE */
.se2_quote1{margin:0 0 30px 20px;padding:0 8px;border-left:2px solid #ccc;color:#888} .se2_quote1 {
.se2_quote2{margin:0 0 30px 13px;padding:0 8px 0 16px;background:url("../../img/bg_quote2.gif") 0 3px no-repeat;color:#888} margin: 0 0 30px 20px;
.se2_quote3{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #ccc;color:#888} padding: 0 8px;
.se2_quote4{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #66b246;color:#888} border-left: 2px solid #ccc;
.se2_quote5{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #ccc;background:#fafafa;color:#888} color: #888
.se2_quote6{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #e5e5e5;color:#888} }
.se2_quote7{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #66b246;color:#888}
.se2_quote8{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #e5e5e5;background:#fafafa;color:#888} .se2_quote2 {
.se2_quote9{margin:0 0 30px;padding:12px 10px 11px;border:2px solid #e5e5e5;color:#888} margin: 0 0 30px 13px;
.se2_quote10{margin:0 0 30px;padding:12px 10px 11px;border:2px solid #e5e5e5;background:#fafafa;color:#888} padding: 0 8px 0 16px;
background: url("../../img/bg_quote2.gif") 0 3px no-repeat;
color: #888
}
.se2_quote3 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px dashed #ccc;
color: #888
}
.se2_quote4 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px dashed #66b246;
color: #888
}
.se2_quote5 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px dashed #ccc;
background: #fafafa;
color: #888
}
.se2_quote6 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px solid #e5e5e5;
color: #888
}
.se2_quote7 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px solid #66b246;
color: #888
}
.se2_quote8 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 1px solid #e5e5e5;
background: #fafafa;
color: #888
}
.se2_quote9 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 2px solid #e5e5e5;
color: #888
}
.se2_quote10 {
margin: 0 0 30px;
padding: 12px 10px 11px;
border: 2px solid #e5e5e5;
background: #fafafa;
color: #888
}

View file

@ -1,171 +1,177 @@
<?php <?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
function editor_html($id, $content, $is_dhtml_editor=true)
{ function editor_html($id, $content, $is_dhtml_editor = true)
global $g5, $config, $w, $board, $write; {
static $js = true; global $g5, $config, $w, $board, $write;
static $js = true;
if(
$is_dhtml_editor && $content && if (
( $is_dhtml_editor && $content &&
(!$w && (isset($board['bo_insert_content']) && !empty($board['bo_insert_content']))) (
|| ($w == 'u' && isset($write['wr_option']) && strpos($write['wr_option'], 'html') === false ) (!$w && (isset($board['bo_insert_content']) && !empty($board['bo_insert_content'])))
) || ($w == 'u' && isset($write['wr_option']) && strpos($write['wr_option'], 'html') === false)
){ //글쓰기 기본 내용 처리 )
if( preg_match('/\r|\n/', $content) && $content === strip_tags($content, '<a><strong><b>') ) { //textarea로 작성되고, html 내용이 없다면 ) { //글쓰기 기본 내용 처리
$content = nl2br($content); if (preg_match('/\r|\n/', $content) && $content === strip_tags($content, '<a><strong><b>')) { //textarea로 작성되고, html 내용이 없다면
} $content = nl2br($content);
} }
}
$editor_url = G5_EDITOR_URL.'/'.$config['cf_editor'];
$editor_url = G5_EDITOR_URL . '/' . $config['cf_editor'];
$html = "";
$html .= "<span class=\"sound_only\">웹에디터 시작</span>"; $html = "";
if ($is_dhtml_editor) $html .= "<span class=\"sound_only\">웹에디터 시작</span>";
$html .= '<script>document.write("<div class=\'cke_sc\'><button type=\'button\' class=\'btn_cke_sc\'>단축키 일람</button></div>");</script>'; if ($is_dhtml_editor)
$html .= '<script>document.write("<div class=\'cke_sc\'><button type=\'button\' class=\'btn_cke_sc\'>단축키 일람</button></div>");</script>';
if ($is_dhtml_editor && $js) {
$html .= "\n".'<script src="'.$editor_url.'/js/service/HuskyEZCreator.js"></script>'; if ($is_dhtml_editor && $js) {
$html .= "\n".'<script>var g5_editor_url = "'.$editor_url.'", oEditors = [], ed_nonce = "'.ft_nonce_create('smarteditor').'";</script>'; $html .= "\n" . '<script src="' . $editor_url . '/js/service/HuskyEZCreator.js"></script>';
$html .= "\n".'<script src="'.$editor_url.'/config.js"></script>'; $html .= "\n" . '<script>var g5_editor_url = "' . $editor_url . '", oEditors = [], ed_nonce = "' . ft_nonce_create('smarteditor') . '";</script>';
$html .= "\n<script>"; $html .= "\n" . '<script src="' . $editor_url . '/config.js"></script>';
$html .= ' $html .= "\n<script>";
$(function(){ $html .= '
$(".btn_cke_sc").click(function(){ $(function(){
if ($(this).next("div.cke_sc_def").length) { $(".btn_cke_sc").click(function(){
$(this).next("div.cke_sc_def").remove(); if ($(this).next("div.cke_sc_def").length) {
$(this).text("단축키 일람"); $(this).next("div.cke_sc_def").remove();
} else { $(this).text("단축키 일람");
$(this).after("<div class=\'cke_sc_def\' />").next("div.cke_sc_def").load("'.$editor_url.'/shortcut.html"); } else {
$(this).text("단축키 일람 닫기"); $(this).after("<div class=\'cke_sc_def\' />").next("div.cke_sc_def").load("' . $editor_url . '/shortcut.html");
} $(this).text("단축키 일람 닫기");
}); }
$(document).on("click", ".btn_cke_sc_close", function(){ });
$(this).parent("div.cke_sc_def").remove(); $(document).on("click", ".btn_cke_sc_close", function(){
}); $(this).parent("div.cke_sc_def").remove();
});'; });
$html .= "\n</script>"; });';
$js = false; $html .= "\n</script>";
} $js = false;
}
$smarteditor_class = $is_dhtml_editor ? "smarteditor2" : "";
$html .= "\n<textarea id=\"$id\" name=\"$id\" class=\"$smarteditor_class\" maxlength=\"65536\" style=\"width:100%;height:300px\">$content</textarea>"; $smarteditor_class = $is_dhtml_editor ? "smarteditor2" : "";
$html .= "\n<span class=\"sound_only\">웹 에디터 끝</span>"; $html .= "\n<textarea id=\"$id\" name=\"$id\" class=\"$smarteditor_class\" maxlength=\"65536\" style=\"width:100%;height:300px\">$content</textarea>";
return $html; $html .= "\n<span class=\"sound_only\">웹 에디터 끝</span>";
} return $html;
}
// textarea 로 값을 넘긴다. javascript 반드시 필요
function get_editor_js($id, $is_dhtml_editor=true) // textarea 로 값을 넘긴다. javascript 반드시 필요
{ function get_editor_js($id, $is_dhtml_editor = true)
if ($is_dhtml_editor) { {
return "var {$id}_editor_data = oEditors.getById['{$id}'].getIR();\noEditors.getById['{$id}'].exec('UPDATE_CONTENTS_FIELD', []);\nif(jQuery.inArray(document.getElementById('{$id}').value.toLowerCase().replace(/^\s*|\s*$/g, ''), ['&nbsp;','<p>&nbsp;</p>','<p><br></p>','<div><br></div>','<p></p>','<br>','']) != -1){document.getElementById('{$id}').value='';}\n"; if ($is_dhtml_editor) {
} else { return "var {$id}_editor_data = oEditors.getById['{$id}'].getIR();\noEditors.getById['{$id}'].exec('UPDATE_CONTENTS_FIELD', []);\nif(jQuery.inArray(document.getElementById('{$id}').value.toLowerCase().replace(/^\s*|\s*$/g, ''), ['&nbsp;','<p>&nbsp;</p>','<p><br></p>','<div><br></div>','<p></p>','<br>','']) != -1){document.getElementById('{$id}').value='';}\n";
return "var {$id}_editor = document.getElementById('{$id}');\n"; } else {
} return "var {$id}_editor = document.getElementById('{$id}');\n";
} }
}
// textarea 의 값이 비어 있는지 검사
function chk_editor_js($id, $is_dhtml_editor=true) // textarea 의 값이 비어 있는지 검사
{ function chk_editor_js($id, $is_dhtml_editor = true)
if ($is_dhtml_editor) { {
return "if (!{$id}_editor_data || jQuery.inArray({$id}_editor_data.toLowerCase(), ['&nbsp;','<p>&nbsp;</p>','<p><br></p>','<p></p>','<br>']) != -1) { alert(\"내용을 입력해 주십시오.\"); oEditors.getById['{$id}'].exec('FOCUS'); return false; }\n"; if ($is_dhtml_editor) {
} else { return "if (!{$id}_editor_data || jQuery.inArray({$id}_editor_data.toLowerCase(), ['&nbsp;','<p>&nbsp;</p>','<p><br></p>','<p></p>','<br>']) != -1) { alert(\"내용을 입력해 주십시오.\"); oEditors.getById['{$id}'].exec('FOCUS'); return false; }\n";
return "if (!{$id}_editor.value) { alert(\"내용을 입력해 주십시오.\"); {$id}_editor.focus(); return false; }\n"; } else {
} return "if (!{$id}_editor.value) { alert(\"내용을 입력해 주십시오.\"); {$id}_editor.focus(); return false; }\n";
} }
}
/*
https://github.com/timostamm/NonceUtil-PHP /*
*/ https://github.com/timostamm/NonceUtil-PHP
*/
if (!defined('FT_NONCE_UNIQUE_KEY'))
define( 'FT_NONCE_UNIQUE_KEY' , sha1($_SERVER['SERVER_SOFTWARE'].G5_MYSQL_USER.session_id().G5_TABLE_PREFIX) ); if (!defined('FT_NONCE_UNIQUE_KEY'))
define('FT_NONCE_UNIQUE_KEY', sha1($_SERVER['SERVER_SOFTWARE'] . G5_MYSQL_USER . session_id() . G5_TABLE_PREFIX));
if (!defined('FT_NONCE_SESSION_KEY'))
define( 'FT_NONCE_SESSION_KEY' , substr(md5(FT_NONCE_UNIQUE_KEY), 5) ); if (!defined('FT_NONCE_SESSION_KEY'))
define('FT_NONCE_SESSION_KEY', substr(md5(FT_NONCE_UNIQUE_KEY), 5));
if (!defined('FT_NONCE_DURATION'))
define( 'FT_NONCE_DURATION' , 60 * 60 ); // 300 makes link or form good for 5 minutes from time of generation, 300은 5분간 유효, 60 * 60 은 1시간 if (!defined('FT_NONCE_DURATION'))
define('FT_NONCE_DURATION', 60 * 60); // 300 makes link or form good for 5 minutes from time of generation, 300은 5분간 유효, 60 * 60 은 1시간
if (!defined('FT_NONCE_KEY'))
define( 'FT_NONCE_KEY' , '_nonce' ); if (!defined('FT_NONCE_KEY'))
define('FT_NONCE_KEY', '_nonce');
// This method creates a key / value pair for a url string
if(!function_exists('ft_nonce_create_query_string')){ // This method creates a key / value pair for a url string
function ft_nonce_create_query_string( $action = '' , $user = '' ){ if (!function_exists('ft_nonce_create_query_string')) {
return FT_NONCE_KEY."=".ft_nonce_create( $action , $user ); function ft_nonce_create_query_string($action = '', $user = '')
} {
} return FT_NONCE_KEY . "=" . ft_nonce_create($action, $user);
}
if(!function_exists('ft_get_secret_key')){ }
function ft_get_secret_key($secret){
return md5(FT_NONCE_UNIQUE_KEY.$secret); if (!function_exists('ft_get_secret_key')) {
} function ft_get_secret_key($secret)
} {
return md5(FT_NONCE_UNIQUE_KEY . $secret);
// This method creates an nonce. It should be called by one of the previous two functions. }
if(!function_exists('ft_nonce_create')){ }
function ft_nonce_create( $action = '',$user='', $timeoutSeconds=FT_NONCE_DURATION ){
// This method creates an nonce. It should be called by one of the previous two functions.
$secret = ft_get_secret_key($action.$user); if (!function_exists('ft_nonce_create')) {
function ft_nonce_create($action = '', $user = '', $timeoutSeconds = FT_NONCE_DURATION)
set_session('token_'.FT_NONCE_SESSION_KEY, $secret); {
$salt = ft_nonce_generate_hash(); $secret = ft_get_secret_key($action . $user);
$time = time();
$maxTime = $time + $timeoutSeconds; set_session('token_' . FT_NONCE_SESSION_KEY, $secret);
$nonce = $salt . "|" . $maxTime . "|" . sha1( $salt . $secret . $maxTime );
return $nonce; $salt = ft_nonce_generate_hash();
$time = time();
} $maxTime = $time + $timeoutSeconds;
} $nonce = $salt . "|" . $maxTime . "|" . sha1($salt . $secret . $maxTime);
return $nonce;
// This method validates an nonce
if(!function_exists('ft_nonce_is_valid')){ }
function ft_nonce_is_valid( $nonce, $action = '', $user='' ){ }
$secret = ft_get_secret_key($action.$user); // This method validates an nonce
if (!function_exists('ft_nonce_is_valid')) {
$token = get_session('token_'.FT_NONCE_SESSION_KEY); function ft_nonce_is_valid($nonce, $action = '', $user = '')
{
if ($secret != $token){
return false; $secret = ft_get_secret_key($action . $user);
}
$token = get_session('token_' . FT_NONCE_SESSION_KEY);
if (is_string($nonce) == false) {
return false; if ($secret != $token) {
} return false;
$a = explode('|', $nonce); }
if (count($a) != 3) {
return false; if (is_string($nonce) == false) {
} return false;
$salt = $a[0]; }
$maxTime = intval($a[1]); $a = explode('|', $nonce);
$hash = $a[2]; if (count($a) != 3) {
$back = sha1( $salt . $secret . $maxTime ); return false;
if ($back != $hash) { }
return false; $salt = $a[0];
} $maxTime = intval($a[1]);
if (time() > $maxTime) { $hash = $a[2];
return false; $back = sha1($salt . $secret . $maxTime);
} if ($back != $hash) {
return true; return false;
} }
} if (time() > $maxTime) {
return false;
// This method generates the nonce timestamp }
if(!function_exists('ft_nonce_generate_hash')){ return true;
function ft_nonce_generate_hash(){ }
$length = 10; }
$chars='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
$ll = strlen($chars)-1; // This method generates the nonce timestamp
$o = ''; if (!function_exists('ft_nonce_generate_hash')) {
while (strlen($o) < $length) { function ft_nonce_generate_hash()
$o .= $chars[ rand(0, $ll) ]; {
} $length = 10;
return $o; $chars = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
} $ll = strlen($chars) - 1;
} $o = '';
while (strlen($o) < $length) {
$o .= $chars[rand(0, $ll)];
}
return $o;
}
}

View file

@ -1,23 +1,23 @@
<dl> <dl>
<dt>CTRL+B</dt> <dt>CTRL+B</dt>
<dd>글자 굵게</dd> <dd>글자 굵게</dd>
<dt>CTRL+U</dt> <dt>CTRL+U</dt>
<dd>글자 밑줄</dd> <dd>글자 밑줄</dd>
<dt>CTRL+I</dt> <dt>CTRL+I</dt>
<dd>글자 기울임</dd> <dd>글자 기울임</dd>
<dt>CTRL+D</dt> <dt>CTRL+D</dt>
<dd>글자 취소선</dd> <dd>글자 취소선</dd>
<dt>TAB</dt> <dt>TAB</dt>
<dd>들여쓰기</dd> <dd>들여쓰기</dd>
<dt>SHIFT+TAB</dt> <dt>SHIFT+TAB</dt>
<dd>내어쓰기</dd> <dd>내어쓰기</dd>
<dt>CTRL+K</dt> <dt>CTRL+K</dt>
<dd>링크 걸기</dd> <dd>링크 걸기</dd>
<dt>CTRL+F</dt> <dt>CTRL+F</dt>
<dd>단어 찾기</dd> <dd>단어 찾기</dd>
<dt>CTRL+H</dt> <dt>CTRL+H</dt>
<dd>단어 바꾸기</dd> <dd>단어 바꾸기</dd>
<dt>CTRL+A</dt> <dt>CTRL+A</dt>
<dd>전체 선택</dd> <dd>전체 선택</dd>
</dl> </dl>
<button type="button" class="btn_cke_sc_close">닫기</button> <button type="button" class="btn_cke_sc_close">닫기</button>

View file

@ -1,8 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko"> <html lang="ko">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Smart Editor&#8482; WYSIWYG Mode</title> <title>Smart Editor&#8482; WYSIWYG Mode</title>
</head> </head>
<body class="se2_inputarea" style="height:0;-webkit-nbsp-mode:normal"></body> <body class="se2_inputarea" style="height:0;-webkit-nbsp-mode:normal"></body>
</html>
</html>

View file

@ -1,9 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ko"> <html lang="ko">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<title>Smart Editor&#8482; WYSIWYG Mode</title> <title>Smart Editor&#8482; WYSIWYG Mode</title>
</head> </head>
<body class="se2_inputarea" style="height:0"></body> <body class="se2_inputarea" style="height:0"></body>
</html>
</html>