#!/usr/bin/perl

;#/////////////////////////////////////////////////////////////////////
;#
;# index.cgi "問い合わせ用フォームメール" (program).
;#　一部のメーラー（Opera、notes）では、件名、送信者名が正しく表示されない場合があります。
;#
;#/////////////////////////////////////////////////////////////////////
;#
;# Copyright (c) 2001 Birth Co.,Ltd All Rights Reserved.
;#      Original by morikawa@birth.ne.jp, 2002/05
;#
;#/////////////////////////////////////////////////////////////////////


use lib './lib';
use Jcode;
use MIME::Base64;
#require "./jcode.pl";
require "./setup.pl";
require "./bbsmail.pl";

&init_var();

$str_script = <<'EOF';
<script type="text/javascript" src="./js/jquery.js"></script>
<script lang="javascript"><!--
	function funcAllClear(tmpForm) {
		tmpForm.find("textarea, :text").val("");
		tmpForm.find(":checked").prop("checked", false);
		tmpForm.find("select option").prop("selected", false);

		$(".errMsg").text("");
	}
--></script>
EOF


if ($in{'submit'} eq $input_btn) {
	if ($check_flag == 1) {
		&check_view;
	} else {
		&send_message;
	}
} elsif ($in{'submit'} eq $check_btn) {
	&send_message;
} else {
	&input_view;
}
exit;

sub input_view {

	(@html_set) = &Read_file($input_html);	#elements.pl内…指定ファイルを配列に格納

	print "Content-type: text/html\n\n";
	foreach $text (@html_set) {
		$text =~ s/\n//g;
		$text =~ s/\r//g;
		$tmp_flag = 0;

		if ($text =~ m/(###[^#]*(?:[^#]*)*###)/i) { #置換用タグ「###　　　###」に一致した行
			$tmp_inputtag = $1;

			if ($text =~ m/(###$btn_replace###)/i) { #送信ボタン置換用タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				$text =~ s/$tmp_inputtag/$input_btn/g;
			}

			if ($text =~ m/(###$reset_btn_replace###)/i) { #送信ボタン置換用タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				$text =~ s/$tmp_inputtag/$reset_btn_input/g;
			}

			if ($text =~ m/(###$lst_mailto###)/i) { # 送信先リスト置換タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				$tmp_tag = "<select name=\"mailto\">\n";
				foreach $key (sort {$a cmp $b} keys %mailto_list) {
					$select = '';
					if ($in{'mailto'} eq $key) {
						$select = ' selected';
					}
					$tmp_tag .= "<option value=\"$key\"$select>$key</option>\n";
				}
				$tmp_tag .= "</select>\n";
				$text =~ s/$tmp_inputtag/$tmp_tag/g;
			}

			if ($tmp_flag == 0) { #それ以外の場合
				foreach $key (keys %form_list) {
					$tmp_replacetag = $form_list{$key}{'replace'};
					if ($text =~ m/(###$tmp_replacetag###)/i) {
						$tmp_inputtag = $1;

						$tmp_tag = $form_list{$key}{'tag'};
						if ($form_list{$key}{'check_type'} eq '1') {
							%select_list = %{$form_list{$key}{'select_list'}};
							foreach $select_key (keys %select_list) {
								$checked = $select_list{$select_key};
								if ($in{$key} eq $select_key) {
									$tmp_tag =~ s/\$$checked/ checked/g;
								}
								else {
									$tmp_tag =~ s/\$$checked//g;
								}
							}
						}
						elsif ($form_list{$key}{'check_type'} eq '2') {
							%select_list = %{$form_list{$key}{'select_list'}};
							foreach $select_key (keys %select_list) {
								$selected = $select_list{$select_key};
								if ($in{$key} eq $select_key) {
									$tmp_tag =~ s/\$$selected/ selected/g;
								}
								else {
									$tmp_tag =~ s/\$$selected//g;
								}
							}
						}
						else {
							$tmp_tag =~ s/\$$key/$in{$key}/g;
						}
						$text =~ s/$tmp_inputtag/$tmp_tag/g;
					}
				}

			}
		}

		if ($text =~ m/<\/head>/i) {
			$text = $str_script . $text;
		}

		print "$text\n";
	}

}

sub check_view {

	%err_list = {};
	$err_flag = 0;

	foreach $key (keys %form_list) {
		$check_flag = $form_list{$key}{'check'};

		# 不正文字のチェック
		if ($in{$key} ne '' && $in{$key} =~ /[\<\>\,\;]/) {
			$err_list{$key} .= "$form_list{$key}{'name'}に\<\>\,\;は入力できません。<br>\n";
			$err_flag = 1;
		}

		if ($check_flag & 1) { # 必須入力チェック
			if ($in{$key} eq '') {
				$err_list{$key} .= "$form_list{$key}{'name'}を入力してください。<br>\n";
				$err_flag = 1;
			}
		}

		if ($check_flag & 2) { # メールアドレスチェック
			if ($in{$key} ne '') {
				if (!($in{$key} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}が正しく入力されていません。<br>\n";
					$err_flag = 1;
				}
			}
		}

		if ($check_flag & 4) { # メールアドレス確認チェック
			if ($in{$key} ne '') {
				$tmp_mail_form = $form_list{$key}{'mail_form'};

				if (!($in{$key} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}が正しく入力されていません。<br>\n";
					$err_flag = 1;
				}
				elsif ($in{$key} ne $in{$tmp_mail_form}) {
					$err_list{$key} .= "$form_list{$key}{'name'}が$form_list{$tmp_mail_form}{'name'}と一致しません。<br>\n";
					$err_flag = 1;
				}
			}
		}

		if ($check_flag & 8) { # 全角チェック（全角文字以外が入力された場合エラー）
			if ($in{$key} ne '') {
				if (!($in{$key} =~ /\W/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}は全角で入力してください。<br>\n";
					$err_flag = 1;
				}
			}
		}
	}

	if ($err_flag == 0) {
		if ($check_html ne '') {
			$view_file = $check_html;
		}
		else {
			$view_file = $input_html;
		}
	}
	else {
		$view_file = $input_html;
	}

	(@html_set) = &Read_file($view_file);	#elements.pl内…指定ファイルを配列に格納

	print "Content-type: text/html\n\n";
	foreach $text (@html_set) {
		$text =~ s/\n//g;
		$text =~ s/\r//g;
		$tmp_flag = 0;

		if ($text =~ /(###[^#]*(?:[^#]*)*###)/g) { #置換用タグ「###　　　###」に一致した行
			$tmp_inputtag = $1;

			if ($text =~ m/(###$btn_replace###)/i) { #送信ボタン置換用タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				if ($err_flag == 0) {
					$text =~ s/$tmp_inputtag/$check_btn/g;
				}
				else {
					$text =~ s/$tmp_inputtag/$input_btn/g;
				}
			}

			if ($text =~ m/(###$reset_btn_replace###)/i) { #送信ボタン置換用タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				if ($err_flag == 0) {
					$text =~ s/$tmp_inputtag/$reset_btn_check/g;
				}
				else {
					$text =~ s/$tmp_inputtag/$reset_btn_input/g;
				}
			}

			if ($text =~ m/(###$lst_mailto###)/i) { # 送信先リスト置換タグに一致
				$tmp_inputtag = $1;
				$tmp_flag = 1;

				if ($err_flag == 0) {
					$tmp_tag = $in{'mailto'};
					$tmp_tag .= "<input type=\"hidden\" name=\"mailto\" value=\"$in{'mailto'}\">";
				}
				else {
					$tmp_tag = "<select name=\"mailto\">\n";
					foreach $key (sort {$a cmp $b} keys %mailto_list) {
						$select = '';
						if ($in{'mailto'} eq $key) {
							$select = ' selected';
						}
						$tmp_tag .= "<option value=\"$key\"$select>$key</option>\n";
					}
					$tmp_tag .= "</select>\n";
				}
				$text =~ s/$tmp_inputtag/$tmp_tag/g;
			}

			if ($tmp_flag == 0) { #それ以外の場合
				foreach $key (keys %form_list) {
					$tmp_replacetag = $form_list{$key}{'replace'};
					if ($text =~ m/(###$tmp_replacetag###)/i) {
						$tmp_inputtag = $1;

						if ($err_flag == 0) {
							if ($form_list{$key}{'check_type'} eq '1' || $form_list{$key}{'check_type'} eq '2') {
								%check_list = %{$form_list{$key}{'check_list'}};
								$value = $check_list{$in{$key}};

								if ($value ne '') {
									$tmp_tag = $value;
								}
								else {
									$tmp_tag = $in{$key};
									$tmp_tag =~ s/\n/<br>\n/g;
								}
							}
							else {
								$tmp_tag = $in{$key};
								$tmp_tag =~ s/\n/<br>\n/g;
							}
							$tmp_tag .= "<input type=\"hidden\" name=\"$key\" value=\"$in{$key}\">";
						}
						else {
							$tmp_tag = $form_list{$key}{'tag'};
							if ($form_list{$key}{'check_type'} eq '1') {
								%select_list = %{$form_list{$key}{'select_list'}};
								foreach $select_key (keys %select_list) {
									$checked = $select_list{$select_key};
									if ($in{$key} eq $select_key) {
										$tmp_tag =~ s/\$$checked/ checked/g;
									}
									else {
										$tmp_tag =~ s/\$$checked//g;
									}
								}
							}
							elsif ($form_list{$key}{'check_type'} eq '2') {
								%select_list = %{$form_list{$key}{'select_list'}};
								foreach $select_key (keys %select_list) {
									$selected = $select_list{$select_key};
									if ($in{$key} eq $select_key) {
										$tmp_tag =~ s/\$$selected/ selected/g;
									}
									else {
										$tmp_tag =~ s/\$$selected//g;
									}
								}
							}
							else {
								$tmp_tag =~ s/\$$key/$in{$key}/g;
							}
							if ($err_list{$key} ne '') {
								$tmp_tag .= '<br><font class="errMsg" style="color: #ff0000; font-size:10px; bold;">' . $err_list{$key} . '</font>';
							}
						}
						$text =~ s/$tmp_inputtag/$tmp_tag/g;
					}
				}
			}
		}

		if ($err_flag == 1) {
			if ($text =~ m/<\/head>/i) {
				$text = $str_script . $text;
			}
		}

		print "$text\n";
	}

}



sub send_message {

	%err_list = {};
	$err_flag = 0;

	if ($check_code ne $in{'check'}) {
		&input_view;
		exit;
	}


	foreach $key (keys %form_list) {
		$check_flag = $form_list{$key}{'check'};

		# 不正文字のチェック
		if ($in{$key} ne '' && $in{$key} =~ /[\<\>\,\;]/) {
			$err_list{$key} .= "$form_list{$key}{'name'}に\<\>\,\;は入力できません。<br>\n";
			$err_flag = 1;
		}

		if ($check_flag & 1) { # 必須入力チェック
			if ($in{$key} eq '') {
				$err_list{$key} .= "$form_list{$key}{'name'}を入力してください。<br>\n";
				$err_flag = 1;
			}
		}

		if ($check_flag & 2) { # メールアドレスチェック
			if ($in{$key} ne '') {
				if (!($in{$key} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}が正しく入力されていません。<br>\n";
					$err_flag = 1;
				}
			}
		}

		if ($check_flag & 4) { # メールアドレス確認チェック
			if ($in{$key} ne '') {
				$tmp_mail_form = $form_list{$key}{'mail_form'};

				if (!($in{$key} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}が正しく入力されていません。<br>\n";
					$err_flag = 1;
				}
				elsif ($in{$key} ne $in{$tmp_mail_form}) {
					$err_list{$key} .= "$form_list{$key}{'name'}が$form_list{$tmp_mail_form}{'name'}と一致しません。<br>\n";
					$err_flag = 1;
				}
			}
		}

		if ($check_flag & 8) { # 全角チェック（全角文字以外が入力された場合エラー）
			if ($in{$key} ne '') {
				if (!($in{$key} =~ /\W/)) {
					$err_list{$key} .= "$form_list{$key}{'name'}は全角で入力してください。<br>\n";
					$err_flag = 1;
				}
			}
		}
	}

	if ($err_flag == 1) {
		(@html_set) = &Read_file($input_html);	#elements.pl内…指定ファイルを配列に格納

		print "Content-type: text/html\n\n";
		foreach $text (@html_set) {
			$text =~ s/\n//g;
			$text =~ s/\r//g;
			$tmp_flag = 0;

			if ($text =~ /(###[^#]*(?:[^#]*)*###)/g) { #置換用タグ「###　　　###」に一致した行
				$tmp_inputtag = $1;

				if ($text =~ m/(###$btn_replace###)/i) { #送信ボタン置換用タグに一致
					$tmp_inputtag = $1;
					$tmp_flag = 1;

					$text =~ s/$tmp_inputtag/$input_btn/g;
				}

				if ($text =~ m/(###$reset_btn_replace###)/i) { #送信ボタン置換用タグに一致
					$tmp_inputtag = $1;
					$tmp_flag = 1;

					$text =~ s/$tmp_inputtag/$reset_btn_input/g;
				}

				if ($text =~ m/(###$lst_mailto###)/i) { # 送信先リスト置換タグに一致
					$tmp_inputtag = $1;
					$tmp_flag = 1;

					$tmp_tag = "<select name=\"mailto\">\n";
					foreach $key (sort {$a cmp $b} keys %mailto_list) {
						$select = '';
						if ($in{'mailto'} eq $key) {
							$select = ' selected';
						}
						$tmp_tag .= "<option value=\"$key\"$select>$key</option>\n";
					}
					$tmp_tag .= "</select>\n";
					$text =~ s/$tmp_inputtag/$tmp_tag/g;
				}

				if ($tmp_flag == 0) { # それ以外の場合
					foreach $key (keys %form_list) {
						$tmp_replacetag = $form_list{$key}{'replace'};
						if ($text =~ m/(###$tmp_replacetag###)/i) {
							$tmp_inputtag = $1;

							$tmp_tag = $form_list{$key}{'tag'};
							if ($form_list{$key}{'check_type'} eq '1') {
								%select_list = %{$form_list{$key}{'select_list'}};
								foreach $select_key (keys %select_list) {
									$checked = $select_list{$select_key};
									if ($in{$key} eq $select_key) {
										$tmp_tag =~ s/\$$checked/ checked/g;
									}
									else {
										$tmp_tag =~ s/\$$checked//g;
									}
								}
							}
							elsif ($form_list{$key}{'check_type'} eq '2') {
								%select_list = %{$form_list{$key}{'select_list'}};
								foreach $select_key (keys %select_list) {
									$selected = $select_list{$select_key};
									if ($in{$key} eq $select_key) {
										$tmp_tag =~ s/\$$selected/ selected/g;
									}
									else {
										$tmp_tag =~ s/\$$selected//g;
									}
								}
							}
							else {
								$tmp_tag =~ s/\$$key/$in{$key}/g;
							}
							if ($err_list{$key} ne '') {
								$tmp_tag .= '<br><font style="color: #ff0000; font-size:10px; bold;">' . $err_list{$key} . '</font>';
							}
							$text =~ s/$tmp_inputtag/$tmp_tag/g;
						}
					}
				}
			}

			print "$text\n";
		}

		exit;
	}

	&send_one;

	(@html_set) = &Read_file($send_html);	#elements.pl内…指定ファイルを配列に格納
	print "Content-type: text/html\n\n";
	foreach $text (@html_set) {

		$text =~ s/\n//;
		$text =~ s/\r//;
		print "$text\n\r";
	}

}

sub Html_head{

	print "Content-type: text/html\n\n";
	print <<"EOF";
<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=UTF-8">
		<title>$title</title>
		<style media="screen" type="text/css"><!--
a:link { text-decoration: none; color: #ff4500 }
a:active { text-decoration: none; color: #ff4500 }
a:hover { text-decoration: none; color: #ff4500 }
a:visited { text-decoration: none; color: #ff4500 }
body { font-size: 12px; color: #696969 }
td { font-size: 12px; color: #696969 }
.blue { color: #4169E1 }
.gray { color: #708090 }
.orange { color: #FF7F50 }

--></style>
	</head>

EOF

}

sub Html_end{

	print <<"EOF";
	</body>
	</html>
EOF
}

sub Get_time{
	#時刻取得
	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	@wday_array = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	#$date_now = sprintf("%01d\/%01d(%s)%02d\:%02d",$mon +1,$mday,$wday_array[$wday],$hour,$min);
	#$date_now = sprintf("%04d/%01d/%01d(%s)%02d:%02d",$year +1900,$mon +1,$mday,$wday_array[$wday],$hour,$min); # 時刻構成
	$date_now = sprintf("%04d/%02d/%02d",$year +1900,$mon +1,$mday); # 時刻構成
	$date_pls = sprintf("%04d%02d%02d%02d%02d",$year +1900,$mon +1,$mday,$hour,$min); # 時刻構成
	$now_year=$year+1900;

	#@wday_array2 = ('SUN','MON','TUE','WED','THU','FRI','SAT');
	$time_now = sprintf("%04d/%01d/%01d(%s)%02d:%02d:%02d",$year +1900,$mon +1,$mday,$wday_array[$wday],$hour,$min,$sec); # こちらは全角を使用しないこと
}

sub init_var{

	$work_adr = $ENV{'SCRIPT_NAME'};
	&Get_time;		#elements.pl内…現時刻の取得
	&GetQuery;		#elements.pl内…Get・Postの取得

}

sub Error_msg{
	local (@msg) = @_;
	local ($i);

	&Html_head;

	print <<"EOF";
	<body bgcolor=#FFFFFF leftmargin=0 marginwidth=0 topmargin=0 marginheight=0 background=img/bg.gif>';
	<div align="center">
	<table border="0" cellspacing="0" cellpadding="0"><tr><td class="line">
	<table border="0" cellspacing="1" cellpadding="5">
		<tr align="center" class="b_col1">
			<td><font class="f_col1"><b class="bold">■ $msg[0] ■</b></font></td>
		</tr>
		<tr class="b_col3">
			<td class="f_col3">
EOF

	foreach $i (1 .. $#msg) { print "$msg[$i]<br>\n"; }

	print <<"EOF";
			</td>
		</tr>
		<tr class="b_col3">
			<td class="f_col3" align=center>
				<a href="javascript:history.back()">戻る</a>
			</td>
		</tr>
	</table>
	</td></tr></table>
	</div>
	<br>
	</td></tr></table>
EOF
	&Html_end;
	exit;
}

sub GetQuery{
	#送られてきたデータを$bufferにコピー
	if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
	else { $buffer = $ENV{'QUERY_STRING'}; }

	@pairs = split(/&/,$buffer);
	foreach $pair (@pairs) {

		($key,$val) = split(/=/,$pair);
		$key =~ tr/+/ /;
		$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
		$val =~ tr/+/ /;
		$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;

		&Jcode'convert($val, 'utf8');
#		&Jcode'h2z(*val);
#		require Jcode::H2Z;
#		$val = &Jcode::H2Z::h2z($val);

#		&jcode'h2z_sjis(*val); # 半角カナ→全角(SJIS)変換
#		&jcode'convert(*val,'utf8'); # SJIS変換

		$val =~ s/\t//g; # タブコードを無効
		$val =~ s/\r\n/\n/g; # Win → Mac (文中の改行はCRとする,行の終わりはLFとする)
		$val =~ s/\r/\n/g; # Unix → Mac

		$val =~ s/&/&amp;/g; # タグ禁止
		$val =~ s/"/&quot;/g;
		$val =~ s/</&lt;/g;
		$val =~ s/>/&gt;/g;

		$in{$key} = $val; # 入力データは%inへ
	}
}

#
#&ReadCookie("$ENV{'SCRIPT_NAME'}\_AdminLogin");
#
sub ReadCookie {

	local($cname) = @_;
	$cookies = $ENV{'HTTP_COOKIE'};

	@pairs = split(/;/,$cookies); # 項目名1:内容1,項目名2:内容2,...
	foreach $pair (@pairs) {

		($key,$val) = split(/=/,$pair,2);
		$key =~ s/ //g;

		if ($key eq $cname) {

			@pairs = split(/,/,$val);
			foreach $pair (@pairs) {

				($key,$val) = split(/:/,$pair,2);
				$COOKIE{$key} = $val;
			}
			last;
		}
	}
}

sub Read_file{
	local($file) = @_;
	local(@lines);

	if (!open(IN,$file)) { &Error_msg("システムエラー","$fileファイルが見つかりません."); }
	@lines = <IN>;
	close(IN);

	return @lines;
}

sub lock {

	# ロック方式の自動判定 symlink()優先
	$symlink_check = (eval { symlink("",""); }, $@ eq "");
	if (!$symlink_check) {

		$c = 0;
		while(-f "$lockfile") { # file式

			$c++;
			if ($c >= 3) { &Error_msg('リトライエラー','ただいま混雑している可能性があります.','戻ってもう一度実行してみてください.'); }
			sleep(2);
		}
		open(LOCK,">$lockfile");
		close(LOCK);
	}
	else {
		local($retry) = 3;
		while (!symlink(".", $lockfile)) { # symlink式

			if (--$retry <= 0) { &Error_msg('リトライエラー','ただいま混雑している可能性があります.','戻ってもう一度実行してみてください.'); }
			sleep(2);
		}
	}
}

sub jis{
	local($msg) = @_;
	&jcode'convert(*msg,'jis');
	return $msg;
}

sub disp_img{

@array = (
	"47","49","46","38","39","61","53","00","13","00","f1","00","00","14","0f","0c","f8","7c","03","e9","ac","71","ff","ff","ff","2c","00","00","00","00","53","00",
	"13","00","00","02","fe","9c","8e","32","6b","ca","0f","17","8a","6f","ca","c3","30","dd","9c","85","0f","7e","0e","e8","50","01","26","80","5c","2a","b2","9f",
	"41","76","32","14","d6","ca","07","04","5b","08","07","c0","1a","72","fd","40","80","d2","4c","56","0b","fd","04","80","dc","ce","a7","63","fd","38","44","1b",
	"d1","78","a4","e2","9a","c4","86","22","71","1a","d4","7a","b9","70","a4","9a","c4","f5","5e","97","83","d9","75","56","0b","c5","ad","5a","f9","9a","8e","43",
	"d3","3e","57","cc","9e","66","c4","e7","84","73","a2","94","54","c4","07","e1","97","c6","55","a8","06","18","e8","a1","48","97","23","d5","e4","e6","83","b9",
	"d5","55","11","59","c5","e4","d8","47","24","5a","3a","a9","79","a7","53","28","a5","b3","50","48","96","39","95","f1","89","f3","45","5b","44","87","78","5a",
	"14","cb","2a","55","f2","2a","45","a6","a7","e9","97","88","a8","e4","da","38","a2","96","7b","67","d9","ac","ec","24","2c","4c","03","aa","74","59","96","3a",
	"45","da","84","a9","dc","78","ed","f3","c0","43","1d","7d","da","67","cc","8a","d6","ec","c2","22","38","e8","7b","1e","64","3e","be","d8","49","ca","f8","18",
	"8d","8c","ae","34","04","a5","9a","04","3c","e3","04","ce","6a","56","25","d7","1e","3b","07","af","3c","f0","06","71","4a","28","1d","de","68","78","0b","35",
	"a5","e2","19","30","8d","03","2e","2e","80","88","b1","63","93","0a","10","5b","29","e4","83","32","a5","ca","95","2c","5b","aa","72","09","33","a6","4c","97",
	"a9","66","da","bc","29","f3","47","c4","9d","3c","7b","fa","fc","09","34","a8","50","00","05","00","00","3b" );

	print "Content-type: image/gif\n\n";
	foreach (@array) { $data = pack('C*',hex($_)); print $data; }
	exit;

}

1;
