提交额外资源

This commit is contained in:
2025-10-16 20:17:38 +08:00
parent 7dac2b8c7d
commit 9b02fea0c0
496 changed files with 68700 additions and 0 deletions

12
build/extraResources/mysql/.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
# MySQL运行时生成的文件
.running-port
grant_root.sql
init_grant.sql
# MySQL数据目录如果不想提交数据库
# data/
# MySQL临时文件
*.tmp
*.lock

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
This is a release of MySQL, an SQL database server.
License information can be found in the LICENSE file.
In test packages where this file is renamed README-test, the license
file is renamed LICENSE-test.
This distribution may include materials developed by third parties.
For license and attribution notices for these materials,
please refer to the LICENSE file.
For further information on MySQL or additional documentation, visit
http://dev.mysql.com/doc/
For additional downloads and the source of MySQL, visit
http://dev.mysql.com/downloads/
MySQL is brought to you by the MySQL team at Oracle.

View File

@@ -0,0 +1,85 @@
==========================================
NPQS9100 MySQL 免安装版使用说明
==========================================
一、快速开始
----------------------------------------
1. 启动 MySQL:
双击运行: startup.bat
(注意不要关闭窗口关闭会停止MySQL)
2. 首次使用,如需重置密码和权限:
双击运行: reset-root-password.bat
3. 停止 MySQL:
双击运行: stop.bat
二、连接信息
----------------------------------------
主机: 127.0.0.1 (或 localhost)
端口: 3306
用户: root
密码: njcnpqs
字符集: utf8mb4
三、脚本说明
----------------------------------------
startup.bat - 启动 MySQL 服务
stop.bat - 正常停止 MySQL 服务
reset-root-password.bat - 重置root密码和权限解决1130错误
kill-running-port.bat - 智能清理应用实际使用的端口自动识别3306/3307/...
my.ini - MySQL 配置文件
.running-port - 运行时端口记录(自动生成,勿删除)
bin/ - MySQL 可执行文件
data/ - 数据库数据目录
share/ - 共享资源
⚠️ 安全说明:
- 应用自动停止MySQL时只会停止应用自己启动的MySQL进程
- 不会影响您电脑上安装的其他MySQL服务
- kill-running-port.bat 会读取 .running-port 文件,精确清理实际使用的端口
- 如果3306被占用应用会自动使用3307kill-running-port.bat 会智能识别
⚙️ 停止机制:
- 应用关闭时会自动使用 mysqladmin shutdown 优雅停止MySQL
- 如果优雅停止失败,会自动尝试强制停止
- 整个停止过程最多12秒确保MySQL完全关闭
⭐ 端口智能管理:
- 应用启动时自动检测可用端口3306 → 3307 → 3308...
- 启动成功后会记录实际端口到 .running-port 文件
- 使用 kill-running-port.bat 可自动清理正确的端口
四、注意事项
----------------------------------------
1. 启动后不要关闭命令行窗口,关闭窗口会停止 MySQL
2. 正常停止请使用 stop.bat
3. 如果出现 1130 或密码错误,运行 reset-root-password.bat
4. 如果端口被占用无法启动,运行 kill-3306.bat
5. 默认密码是 njcnpqs不要随意修改
五、常见问题
----------------------------------------
Q: 连接提示 1130 错误或密码错误?
A: 运行 reset-root-password.bat 重置权限
Q: 启动失败或端口被占用?
A: 运行 kill-running-port.bat 清理端口(自动识别正确端口)
Q: 如何重置密码?
A: 运行 reset-root-password.bat密码会重置为 njcnpqs
Q: 数据在哪里?
A: 所有数据库数据在 data/ 目录下
==========================================
南京灿能电气自动化有限公司
2025
==========================================

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,933 @@
#!/usr/bin/perl
# Copyright (c) 2000, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
use Getopt::Long;
use POSIX qw(strftime getcwd);
use File::Path qw(mkpath);
$|=1;
$VER="2.16";
my @defaults_options; # Leading --no-defaults, --defaults-file, etc.
$opt_example = 0;
$opt_help = 0;
$opt_log = undef();
$opt_mysqladmin = "C:/Program Files (x86)/MySQL/bin/mysqladmin";
$opt_mysqld = "C:/Program Files (x86)/MySQL/bin/mysqld";
$opt_no_log = 0;
$opt_password = undef();
$opt_tcp_ip = 0;
$opt_user = "root";
$opt_version = 0;
$opt_silent = 0;
$opt_verbose = 0;
my $my_print_defaults_exists= 1;
my $logdir= undef();
my ($mysqld, $mysqladmin, $groupids, $homedir, $my_progname);
$homedir = $ENV{HOME};
$my_progname = $0;
$my_progname =~ s/.*[\/]//;
if (defined($ENV{UMASK})) {
my $UMASK = $ENV{UMASK};
my $m;
my $fmode = "0640";
if(($UMASK =~ m/[^0246]/) || ($UMASK =~ m/^[^0]/) || (length($UMASK) != 4)) {
printf("UMASK must be a 3-digit mode with an additional leading 0 to indicate octal.\n");
printf("The first digit will be corrected to 6, the others may be 0, 2, 4, or 6.\n"); }
else {
$fmode= substr $UMASK, 2, 2;
$fmode= "06${fmode}"; }
if($fmode != $UMASK) {
printf("UMASK corrected from $UMASK to $fmode ...\n"); }
$fmode= oct($fmode);
umask($fmode);
}
main();
####
#### main sub routine
####
sub main
{
my $flag_exit= 0;
if (!defined(my_which(my_print_defaults)))
{
# We can't throw out yet, since --version, --help, or --example may
# have been given
print "WARNING: my_print_defaults command not found.\n";
print "Please make sure you have this command available and\n";
print "in your path. The command is available from the latest\n";
print "MySQL distribution.\n";
$my_print_defaults_exists= 0;
}
# Remove leading defaults options from @ARGV
while (@ARGV > 0)
{
last unless $ARGV[0] =~
/^--(?:no-defaults$|(?:defaults-file|defaults-extra-file)=)/;
push @defaults_options, (shift @ARGV);
}
foreach (@defaults_options)
{
$_ = quote_shell_word($_);
}
# Add [mysqld_multi] options to front of @ARGV, ready for GetOptions()
unshift @ARGV, defaults_for_group('mysqld_multi');
# We've already handled --no-defaults, --defaults-file, etc.
if (!GetOptions("help", "example", "version", "mysqld=s", "mysqladmin=s",
"user=s", "password=s", "log=s", "no-log",
"tcp-ip", "silent", "verbose"))
{
$flag_exit= 1;
}
usage() if ($opt_help);
if ($opt_verbose && $opt_silent)
{
print "Both --verbose and --silent have been given. Some of the warnings ";
print "will be disabled\nand some will be enabled.\n\n";
}
init_log() if (!defined($opt_log));
$groupids = $ARGV[1];
if ($opt_version)
{
print "$my_progname version $VER by Jani Tolonen\n";
exit(0);
}
example() if ($opt_example);
if ($flag_exit)
{
print "Error with an option, see $my_progname --help for more info.\n";
exit(1);
}
if (!defined(my_which(my_print_defaults)))
{
print "ABORT: Can't find command 'my_print_defaults'.\n";
print "This command is available from the latest MySQL\n";
print "distribution. Please make sure you have the command\n";
print "in your PATH.\n";
exit(1);
}
usage() if (!defined($ARGV[0]) ||
(!($ARGV[0] =~ m/^start$/i) &&
!($ARGV[0] =~ m/^stop$/i) &&
!($ARGV[0] =~ m/^reload$/i) &&
!($ARGV[0] =~ m/^report$/i)));
if (!$opt_no_log)
{
w2log("$my_progname log file version $VER; run: ",
"$opt_log", 1, 0);
}
else
{
print "$my_progname log file version $VER; run: ";
print strftime "%a %b %e %H:%M:%S %Y", localtime;
print "\n";
}
if (($ARGV[0] =~ m/^start$/i) || ($ARGV[0] =~ m/^reload$/i))
{
if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose)
{
print "WARNING: Couldn't find the default mysqld binary.\n";
print "Tried: $opt_mysqld\n";
print "This is OK, if you are using option \"mysqld=...\" in ";
print "groups [mysqldN] separately for each.\n\n";
}
if ($ARGV[0] =~ m/^start$/i) {
start_mysqlds();
} elsif ($ARGV[0] =~ m/^reload$/i) {
reload_mysqlds();
}
}
else
{
if (!defined(($mysqladmin= my_which($opt_mysqladmin))) && $opt_verbose)
{
print "WARNING: Couldn't find the default mysqladmin binary.\n";
print "Tried: $opt_mysqladmin\n";
print "This is OK, if you are using option \"mysqladmin=...\" in ";
print "groups [mysqldN] separately for each.\n\n";
}
if ($ARGV[0] =~ m/^report$/i)
{
report_mysqlds();
}
else
{
stop_mysqlds();
}
}
}
#
# Quote word for shell
#
sub quote_shell_word
{
my ($option)= @_;
$option =~ s!([^\w=./-])!\\$1!g;
return $option;
}
sub defaults_for_group
{
my ($group) = @_;
return () unless $my_print_defaults_exists;
my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
my @defaults = `$com`;
chomp @defaults;
return @defaults;
}
####
#### Init log file. Check for appropriate place for log file, in the following
#### order: my_print_defaults mysqld datadir, C:/Program Files (x86)/MySQL/share
####
sub init_log
{
foreach my $opt (defaults_for_group('mysqld'))
{
if ($opt =~ m/^--datadir=(.*)/ && -d "$1" && -w "$1")
{
$logdir= $1;
}
}
if (!defined($logdir))
{
$logdir= "C:/Program Files (x86)/MySQL/share" if (-d "C:/Program Files (x86)/MySQL/share" && -w "C:/Program Files (x86)/MySQL/share");
}
if (!defined($logdir))
{
# Log file was not specified and we could not log to a standard place,
# so log file be disabled for now.
if (!$opt_silent)
{
print "WARNING: Log file disabled. Maybe directory or file isn't writable?\n";
}
$opt_no_log= 1;
}
else
{
$opt_log= "$logdir/mysqld_multi.log";
}
}
####
#### Report living and not running MySQL servers
####
sub report_mysqlds
{
my (@groups, $com, $i, @options, $pec);
print "Reporting MySQL servers\n";
if (!$opt_no_log)
{
w2log("\nReporting MySQL servers","$opt_log",0,0);
}
@groups = &find_groups($groupids);
for ($i = 0; defined($groups[$i]); $i++)
{
$com= get_mysqladmin_options($i, @groups);
$com.= " ping >> /dev/null 2>&1";
system($com);
$pec = $? >> 8;
if ($pec)
{
print "MySQL server from group: $groups[$i] is not running\n";
if (!$opt_no_log)
{
w2log("MySQL server from group: $groups[$i] is not running",
"$opt_log", 0, 0);
}
}
else
{
print "MySQL server from group: $groups[$i] is running\n";
if (!$opt_no_log)
{
w2log("MySQL server from group: $groups[$i] is running",
"$opt_log", 0, 0);
}
}
}
if (!$i)
{
print "No groups to be reported (check your GNRs)\n";
if (!$opt_no_log)
{
w2log("No groups to be reported (check your GNRs)", "$opt_log", 0, 0);
}
}
}
####
#### start multiple servers
####
sub start_mysqlds()
{
my (@groups, $com, $tmp, $i, @options, $j, $mysqld_found, $info_sent);
if (!$opt_no_log)
{
w2log("\nStarting MySQL servers\n","$opt_log",0,0);
}
else
{
print "\nStarting MySQL servers\n";
}
@groups = &find_groups($groupids);
for ($i = 0; defined($groups[$i]); $i++)
{
@options = defaults_for_group($groups[$i]);
$basedir_found= 0; # The default
$mysqld_found= 1; # The default
$mysqld_found= 0 if (!length($mysqld));
# Initialize the command.
$com= "$mysqld";
# Initialize the command option list, process the options,
# reset command if relevant, append key options to command line.
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
{
if ("--datadir=" eq substr($options[$j], 0, 10)) {
$datadir = $options[$j];
$datadir =~ s/\-\-datadir\=//;
eval { mkpath($datadir) };
if ($@) {
print "FATAL ERROR: Cannot create data directory $datadir: $!\n";
exit(1);
}
# Quote and append 'datadir' to command line.
$options[$j]= quote_shell_word($options[$j]);
$tmp.= " $options[$j]";
}
elsif ("--mysqladmin=" eq substr($options[$j], 0, 13))
{
# catch this and ignore
}
elsif ("--mysqld=" eq substr($options[$j], 0, 9))
{
$options[$j]=~ s/\-\-mysqld\=//;
# Reset command.
$com= $options[$j];
$mysqld_found= 1;
}
elsif ("--basedir=" eq substr($options[$j], 0, 10))
{
$basedir= $options[$j];
$basedir =~ s/^--basedir=//;
$basedir_found= 1;
# Quote and append 'basedir' to command line.
$options[$j]= quote_shell_word($options[$j]);
$tmp.= " $options[$j]";
}
else
{
# Quote and append additional options to command line.
$options[$j]= quote_shell_word($options[$j]);
$tmp.= " $options[$j]";
}
}
if ($opt_verbose && $com =~ m/\/(safe_mysqld|mysqld_safe)$/ && !$info_sent)
{
print "WARNING: $1 is being used to start mysqld. In this case you ";
print "may need to pass\n\"ledir=...\" under groups [mysqldN] to ";
print "$1 in order to find the actual mysqld binary.\n";
print "ledir (library executable directory) should be the path to the ";
print "wanted mysqld binary.\n\n";
$info_sent= 1;
}
# Prepare command line by appending command and option list, and redirect output.
$com.= $tmp;
$com.= " >> $opt_log 2>&1" if (!$opt_no_log);
if (!$mysqld_found)
{
print "\n";
print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]], ";
print "but no mysqld binary was found.\n";
print "Please add \"mysqld=...\" in group [mysqld_multi], or add it to ";
print "group [$groups[$i]] separately.\n";
exit(1);
}
if ($basedir_found)
{
$curdir=getcwd();
chdir($basedir) or die "Can't change to datadir $basedir";
}
# Prepare datadir by initializing the server, unless this is already done.
if (! -d $datadir."/mysql") {
if (-w $datadir) {
print "\n\nInstalling new database in $datadir\n\n";
system($com." --initialize");
} else {
print "\n";
print "FATAL ERROR: Tried to create mysqld under group [$groups[$i]],\n";
print "but the data directory is not writable.\n";
print "data directory used: $datadir\n";
exit(1);
}
}
if (! -d $datadir."/mysql") {
print "\n";
print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]],\n";
print "but no data directory was found or could be created.\n";
print "data directory used: $datadir\n";
exit(1);
}
# Start the command in the background.
system($com." &");
if ($basedir_found)
{
chdir($curdir) or die "Can't change back to original dir $curdir";
}
}
if (!$i && !$opt_no_log)
{
w2log("No MySQL servers to be started (check your GNRs)",
"$opt_log", 0, 0);
}
}
####
#### reload multiple servers
####
sub reload_mysqlds()
{
my (@groups, $com, $tmp, $i, @options, $j);
if (!$opt_no_log)
{
w2log("\nReloading MySQL servers\n","$opt_log",0,0);
}
else
{
print "\nReloading MySQL servers\n";
}
@groups = &find_groups($groupids);
for ($i = 0; defined($groups[$i]); $i++)
{
$mysqld_server = $mysqld;
@options = defaults_for_group($groups[$i]);
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
{
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
{
# catch this and ignore
}
elsif ("--mysqld=" eq substr($options[$j], 0, 9))
{
$options[$j] =~ s/\-\-mysqld\=//;
$mysqld_server = $options[$j];
}
elsif ("--pid-file=" eq substr($options[$j], 0, 11))
{
$options[$j] =~ s/\-\-pid-file\=//;
$pid_file = $options[$j];
}
}
$com = "killproc -p $pid_file -HUP $mysqld_server";
system($com);
$com = "touch $pid_file";
system($com);
}
if (!$i && !$opt_no_log)
{
w2log("No MySQL servers to be reloaded (check your GNRs)",
"$opt_log", 0, 0);
}
}
###
#### stop multiple servers
####
sub stop_mysqlds()
{
my (@groups, $com, $i, @options);
if (!$opt_no_log)
{
w2log("\nStopping MySQL servers\n","$opt_log",0,0);
}
else
{
print "\nStopping MySQL servers\n";
}
@groups = &find_groups($groupids);
for ($i = 0; defined($groups[$i]); $i++)
{
$com= get_mysqladmin_options($i, @groups);
$com.= " shutdown";
$com.= " >> $opt_log 2>&1" if (!$opt_no_log);
$com.= " &";
system($com);
}
if (!$i && !$opt_no_log)
{
w2log("No MySQL servers to be stopped (check your GNRs)",
"$opt_log", 0, 0);
}
}
####
#### Sub function for mysqladmin option parsing
####
sub get_mysqladmin_options
{
my ($i, @groups)= @_;
my ($mysqladmin_found, $com, $tmp, $j);
@options = defaults_for_group($groups[$i]);
$mysqladmin_found= 1; # The default
$mysqladmin_found= 0 if (!length($mysqladmin));
$com = "$mysqladmin";
$tmp = " -u $opt_user";
if (defined($opt_password)) {
my $pw= $opt_password;
# Protect single quotes in password
$pw =~ s/'/'"'"'/g;
$tmp.= " -p'$pw'";
}
$tmp.= $opt_tcp_ip ? " -h 127.0.0.1" : "";
for ($j = 0; defined($options[$j]); $j++)
{
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
{
$options[$j]=~ s/\-\-mysqladmin\=//;
$com= $options[$j];
$mysqladmin_found= 1;
}
elsif ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) ||
($options[$j] =~ m/^(\-\-port\=)(.*)$/))
{
$tmp.= " $options[$j]";
}
}
if (!$mysqladmin_found)
{
print "\n";
print "FATAL ERROR: Tried to use mysqladmin in group [$groups[$i]], ";
print "but no mysqladmin binary was found.\n";
print "Please add \"mysqladmin=...\" in group [mysqld_multi], or ";
print "in group [$groups[$i]].\n";
exit(1);
}
$com.= $tmp;
return $com;
}
# Return a list of option files which can be opened. Similar, but not
# identical, to behavior of my_search_option_files()
sub list_defaults_files
{
my %opt;
foreach (@defaults_options)
{
return () if /^--no-defaults$/;
$opt{$1} = $2 if /^--defaults-(extra-file|file)=(.*)$/;
}
return ($opt{file}) if exists $opt{file};
my %seen; # Don't list the same file more than once
return grep { defined $_ and not $seen{$_}++ and -f $_ and -r $_ }
('/etc/my.cnf',
'/etc/mysql/my.cnf',
'C:/Program Files (x86)/MySQL/my.cnf',
($ENV{MYSQL_HOME} ? "$ENV{MYSQL_HOME}/my.cnf" : undef),
$opt{'extra-file'},
($ENV{HOME} ? "$ENV{HOME}/.my.cnf" : undef));
}
# Takes a specification of GNRs (see --help), and returns a list of matching
# groups which actually are mentioned in a relevant config file
sub find_groups
{
my ($raw_gids) = @_;
my %gids;
my @groups;
if (defined($raw_gids))
{
# Make a hash of the wanted group ids
foreach my $raw_gid (split ',', $raw_gids)
{
# Match 123 or 123-456
my ($start, $end) = ($raw_gid =~ /^\s*(\d+)(?:\s*-\s*(\d+))?\s*$/);
$end = $start if not defined $end;
if (not defined $start or $end < $start or $start < 0)
{
print "ABORT: Bad GNR: $raw_gid; see $my_progname --help\n";
exit(1);
}
foreach my $i ($start .. $end)
{
# Use $i + 0 to normalize numbers (002 + 0 -> 2)
$gids{$i + 0}= 1;
}
}
}
my @defaults_files = list_defaults_files();
#warn "@{[sort keys %gids]} -> @defaults_files\n";
foreach my $file (@defaults_files)
{
next unless open CONF, "< $file";
while (<CONF>)
{
if (/^\s*\[\s*(mysqld)(\d+)\s*\]\s*$/)
{
#warn "Found a group: $1$2\n";
# Use $2 + 0 to normalize numbers (002 + 0 -> 2)
if (not defined($raw_gids) or $gids{$2 + 0})
{
push @groups, "$1$2";
}
}
}
close CONF;
}
return @groups;
}
####
#### w2log: Write to a logfile.
#### 1.arg: append to the log file (given string, or from a file. if a file,
#### file will be read from $opt_logdir)
#### 2.arg: logfile -name (w2log assumes that the logfile is in $opt_logdir).
#### 3.arg. 0 | 1, if true, print current date to the logfile. 3. arg will
#### be ignored, if 1. arg is a file.
#### 4.arg. 0 | 1, if true, first argument is a file, else a string
####
sub w2log
{
my ($msg, $file, $date_flag, $is_file)= @_;
my (@data);
open (LOGFILE, ">>$opt_log")
or die "FATAL: w2log: Couldn't open log file: $opt_log\n";
if ($is_file)
{
open (FROMFILE, "<$msg") && (@data=<FROMFILE>) &&
close(FROMFILE)
or die "FATAL: w2log: Couldn't open file: $msg\n";
foreach my $line (@data)
{
print LOGFILE "$line";
}
}
else
{
print LOGFILE "$msg";
print LOGFILE strftime "%a %b %e %H:%M:%S %Y", localtime if ($date_flag);
print LOGFILE "\n";
}
close (LOGFILE);
return;
}
####
#### my_which is used, because we can't assume that every system has the
#### which -command. my_which can take only one argument at a time.
#### Return values: requested system command with the first found path,
#### or undefined, if not found.
####
sub my_which
{
my ($command) = @_;
my (@paths, $path);
# If the argument is not 'my_print_defaults' then it would be of the format
# <absolute_path>/<program>
return $command if ($command ne 'my_print_defaults' && -f $command &&
-x $command);
@paths = split(':', $ENV{'PATH'});
foreach $path (@paths)
{
$path .= "/$command";
return $path if (-f $path && -x $path);
}
return undef();
}
####
#### example
####
sub example
{
print <<EOF;
# This is an example of a my.cnf file for $my_progname.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf
#
# SOME IMPORTANT NOTES FOLLOW:
#
# 1.COMMON USER
#
# Make sure that the MySQL user, who is stopping the mysqld services, has
# the same password to all MySQL servers being accessed by $my_progname.
# This user needs to have the 'Shutdown_priv' -privilege, but for security
# reasons should have no other privileges. It is advised that you create a
# common 'multi_admin' user for all MySQL servers being controlled by
# $my_progname. Here is an example how to do it:
#
# GRANT SHUTDOWN ON *.* TO multi_admin\@localhost IDENTIFIED BY 'password'
#
# You will need to apply the above to all MySQL servers that are being
# controlled by $my_progname. 'multi_admin' will shutdown the servers
# using 'mysqladmin' -binary, when '$my_progname stop' is being called.
#
# 2.PID-FILE
#
# If you are using mysqld_safe to start mysqld, make sure that every
# MySQL server has a separate pid-file. In order to use mysqld_safe
# via $my_progname, you need to use two options:
#
# mysqld=/path/to/mysqld_safe
# ledir=/path/to/mysqld-binary/
#
# ledir (library executable directory), is an option that only mysqld_safe
# accepts, so you will get an error if you try to pass it to mysqld directly.
# For this reason you might want to use the above options within [mysqld#]
# group directly.
#
# 3.DATA DIRECTORY
#
# It is NOT advised to run many MySQL servers within the same data directory.
# You can do so, but please make sure to understand and deal with the
# underlying caveats. In short they are:
# - Speed penalty
# - Risk of table/data corruption
# - Data synchronising problems between the running servers
# - Heavily media (disk) bound
# - Relies on the system (external) file locking
# - Is not applicable with all table types. (Such as InnoDB)
# Trying so will end up with undesirable results.
#
# 4.TCP/IP Port
#
# Every server requires one and it must be unique.
#
# 5.[mysqld#] Groups
#
# In the example below the first and the fifth mysqld group was
# intentionally left out. You may have 'gaps' in the config file. This
# gives you more flexibility.
#
# 6.MySQL Server User
#
# You can pass the user=... option inside [mysqld#] groups. This
# can be very handy in some cases, but then you need to run $my_progname
# as UNIX root.
#
# 7.A Start-up Manage Script for $my_progname
#
# In the recent MySQL distributions you can find a file called
# mysqld_multi.server.sh. It is a wrapper for $my_progname. This can
# be used to start and stop multiple servers during boot and shutdown.
#
# You can place the file in /etc/init.d/mysqld_multi.server.sh and
# make the needed symbolic links to it from various run levels
# (as per Linux/Unix standard). You may even replace the
# /etc/init.d/mysql.server script with it.
#
# Before using, you must create a my.cnf file either in C:/Program Files (x86)/MySQL/my.cnf
# or /root/.my.cnf and add the [mysqld_multi] and [mysqld#] groups.
#
# The script can be found from support-files/mysqld_multi.server.sh
# in MySQL distribution. (Verify the script before using)
#
[mysqld_multi]
mysqld = C:/Program Files (x86)/MySQL/bin/mysqld_safe
mysqladmin = C:/Program Files (x86)/MySQL/bin/mysqladmin
user = multi_admin
password = my_password
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = C:/Program Files/MySQL/MySQL Server 8.0/data2/hostname.pid2
datadir = C:/Program Files/MySQL/MySQL Server 8.0/data2
language = C:/Program Files (x86)/MySQL/share/mysql/english
user = unix_user1
[mysqld3]
mysqld = /path/to/mysqld_safe
ledir = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql.sock3
port = 3308
pid-file = C:/Program Files/MySQL/MySQL Server 8.0/data3/hostname.pid3
datadir = C:/Program Files/MySQL/MySQL Server 8.0/data3
language = C:/Program Files (x86)/MySQL/share/mysql/swedish
user = unix_user2
[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file = C:/Program Files/MySQL/MySQL Server 8.0/data4/hostname.pid4
datadir = C:/Program Files/MySQL/MySQL Server 8.0/data4
language = C:/Program Files (x86)/MySQL/share/mysql/estonia
user = unix_user3
[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = C:/Program Files/MySQL/MySQL Server 8.0/data6/hostname.pid6
datadir = C:/Program Files/MySQL/MySQL Server 8.0/data6
language = C:/Program Files (x86)/MySQL/share/mysql/japanese
user = unix_user4
EOF
exit(0);
}
####
#### usage
####
sub usage
{
print <<EOF;
$my_progname version $VER by Jani Tolonen
Description:
$my_progname can be used to start, reload, or stop any number of separate
mysqld processes running in different TCP/IP ports and UNIX sockets.
$my_progname can read group [mysqld_multi] from my.cnf file. You may
want to put options mysqld=... and mysqladmin=... there. Since
version 2.10 these options can also be given under groups [mysqld#],
which gives more control over different versions. One can have the
default mysqld and mysqladmin under group [mysqld_multi], but this is
not mandatory. Please note that if mysqld or mysqladmin is missing
from both [mysqld_multi] and [mysqld#], a group that is tried to be
used, $my_progname will abort with an error.
$my_progname will search for groups named [mysqld#] from my.cnf (or
the given --defaults-extra-file=...), where '#' can be any positive
integer starting from 1. These groups should be the same as the regular
[mysqld] group, but with those port, socket and any other options
that are to be used with each separate mysqld process. The number
in the group name has another function; it can be used for starting,
reloading, stopping, or reporting any specific mysqld server.
Usage: $my_progname [OPTIONS] {start|reload|stop|report} [GNR,GNR,GNR...]
or $my_progname [OPTIONS] {start|reload|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
The GNR means the group number. You can start, reload, stop or report any GNR,
or several of them at the same time. (See --example) The GNRs list can
be comma separated or a dash combined. The latter means that all the
GNRs between GNR1-GNR2 will be affected. Without GNR argument all the
groups found will either be started, reloaded, stopped, or reported. Note that
syntax for specifying GNRs must appear without spaces.
Options:
These options must be given before any others:
--no-defaults Do not read any defaults file
--defaults-file=... Read only this configuration file, do not read the
standard system-wide and user-specific files
--defaults-extra-file=... Read this configuration file in addition to the
standard system-wide and user-specific files
Using: @{[join ' ', @defaults_options]}
--example Give an example of a config file with extra information.
--help Print this help and exit.
--log=... Log file. Full path to and the name for the log file. NOTE:
If the file exists, everything will be appended.
Using: $opt_log
--mysqladmin=... mysqladmin binary to be used for a server shutdown.
Since version 2.10 this can be given within groups [mysqld#]
Using: $mysqladmin
--mysqld=... mysqld binary to be used. Note that you can give mysqld_safe
to this option also. The options are passed to mysqld. Just
make sure you have mysqld in your PATH or fix mysqld_safe.
Using: $mysqld
Please note: Since mysqld_multi version 2.3 you can also
give this option inside groups [mysqld#] in ~/.my.cnf,
where '#' stands for an integer (number) of the group in
question. This will be recognised as a special option and
will not be passed to the mysqld. This will allow one to
start different mysqld versions with mysqld_multi.
--no-log Print to stdout instead of the log file. By default the log
file is turned on.
--password=... Password for mysqladmin user.
--silent Disable warnings.
--tcp-ip Connect to the MySQL server(s) via the TCP/IP port instead
of the UNIX socket. This affects stopping and reporting.
If a socket file is missing, the server may still be
running, but can be accessed only via the TCP/IP port.
By default connecting is done via the UNIX socket.
--user=... mysqladmin user. Using: $opt_user
--verbose Be more verbose.
--version Print the version number and exit.
EOF
exit(0);
}

Binary file not shown.

View File

@@ -0,0 +1,213 @@
#!/usr/bin/perl
# Copyright (c) 2000, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# mysqldumpslow - parse and summarize the MySQL slow query log
use strict;
use Getopt::Long;
# t=time, l=lock time, r=rows
# at, al, and ar are the corresponding averages
my %opt = (
s => 'at',
h => '*',
);
GetOptions(\%opt,
'v|verbose+',# verbose
'help+', # write usage info
'd|debug+', # debug
's=s', # what to sort by (al, at, ar, c, t, l, r)
'r!', # reverse the sort order (largest last instead of first)
't=i', # just show the top n queries
'a!', # don't abstract all numbers to N and strings to 'S'
'n=i', # abstract numbers with at least n digits within names
'g=s', # grep: only consider stmts that include this string
'h=s', # hostname of db server for *-slow.log filename (can be wildcard)
'i=s', # name of server instance (if using mysql.server startup script)
'l!', # don't subtract lock time from total time
) or usage("bad option");
$opt{'help'} and usage();
unless (@ARGV) {
my $defaults = `my_print_defaults mysqld`;
my $basedir = ($defaults =~ m/--basedir=(.*)/)[0]
or die "Can't determine basedir from 'my_print_defaults mysqld' output: $defaults";
warn "basedir=$basedir\n" if $opt{v};
my $datadir = ($defaults =~ m/--datadir=(.*)/)[0];
my $slowlog = ($defaults =~ m/--slow-query-log-file=(.*)/)[0];
if (!$datadir or $opt{i}) {
# determine the datadir from the instances section of /etc/my.cnf, if any
my $instances = `my_print_defaults instances`;
die "Can't determine datadir from 'my_print_defaults mysqld' output: $defaults"
unless $instances;
my @instances = ($instances =~ m/^--(\w+)-/mg);
die "No -i 'instance_name' specified to select among known instances: @instances.\n"
unless $opt{i};
die "Instance '$opt{i}' is unknown (known instances: @instances)\n"
unless grep { $_ eq $opt{i} } @instances;
$datadir = ($instances =~ m/--$opt{i}-datadir=(.*)/)[0]
or die "Can't determine --$opt{i}-datadir from 'my_print_defaults instances' output: $instances";
warn "datadir=$datadir\n" if $opt{v};
}
if ( -f $slowlog ) {
@ARGV = ($slowlog);
die "Can't find '$slowlog'\n" unless @ARGV;
} else {
@ARGV = <$datadir/$opt{h}-slow.log>;
die "Can't find '$datadir/$opt{h}-slow.log'\n" unless @ARGV;
}
}
warn "\nReading mysql slow query log from @ARGV\n";
my @pending;
my %stmt;
$/ = ";\n#"; # read entire statements using paragraph mode
while ( defined($_ = shift @pending) or defined($_ = <>) ) {
warn "[[$_]]\n" if $opt{d}; # show raw paragraph being read
my @chunks = split /^\/.*Version.*started with[\000-\377]*?Time.*Id.*Command.*Argument.*\n/m;
if (@chunks > 1) {
unshift @pending, map { length($_) ? $_ : () } @chunks;
warn "<<".join(">>\n<<",@chunks).">>" if $opt{d};
next;
}
s/^#? Time: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+(Z|[+-]\d{2}:\d{2}).*\n//;
my ($user,$host,$dummy,$thread_id) = s/^#? User\@Host:\s+(\S+)\s+\@\s+(\S+)\s+\S+(\s+Id:\s+(\d+))?.*\n// ? ($1,$2,$3,$4) : ('','','','','');
s/^# Query_time: ([0-9.]+)\s+Lock_time: ([0-9.]+)\s+Rows_sent: ([0-9.]+).*\n//;
my ($t, $l, $r) = ($1, $2, $3);
$t -= $l unless $opt{l};
# remove fluff that mysqld writes to log when it (re)starts:
s!^/.*Version.*started with:.*\n!!mg;
s!^Tcp port: \d+ Unix socket: \S+\n!!mg;
s!^Time.*Id.*Command.*Argument.*\n!!mg;
s/^use \w+;\n//; # not consistently added
s/^SET timestamp=\d+;\n//;
s/^[ ]*\n//mg; # delete blank lines
s/^[ ]*/ /mg; # normalize leading whitespace
s/\s*;\s*(#\s*)?$//; # remove trailing semicolon(+newline-hash)
next if $opt{g} and !m/$opt{g}/io;
unless ($opt{a}) {
s/\b\d+\b/N/g;
s/\b0x[0-9A-Fa-f]+\b/N/g;
s/''/'S'/g;
s/""/"S"/g;
s/(\\')//g;
s/(\\")//g;
s/'[^']+'/'S'/g;
s/"[^"]+"/"S"/g;
# -n=8: turn log_20001231 into log_NNNNNNNN
s/([a-z_]+)(\d{$opt{n},})/$1.('N' x length($2))/ieg if $opt{n};
# abbreviate massive "in (...)" statements and similar
s!(([NS],){100,})!sprintf("$2,{repeated %d times}",length($1)/2)!eg;
}
my $s = $stmt{$_} ||= { users=>{}, hosts=>{} };
$s->{c} += 1;
$s->{t} += $t;
$s->{l} += $l;
$s->{r} += $r;
$s->{users}->{$user}++ if $user;
$s->{hosts}->{$host}++ if $host;
warn "{{$_}}\n\n" if $opt{d}; # show processed statement string
}
foreach (keys %stmt) {
my $v = $stmt{$_} || die;
my ($c, $t, $l, $r) = @{ $v }{qw(c t l r)};
$v->{at} = $t / $c;
$v->{al} = $l / $c;
$v->{ar} = $r / $c;
}
my @sorted = sort { $stmt{$b}->{$opt{s}} <=> $stmt{$a}->{$opt{s}} } keys %stmt;
@sorted = @sorted[0 .. $opt{t}-1] if $opt{t};
@sorted = reverse @sorted if $opt{r};
foreach (@sorted) {
my $v = $stmt{$_} || die;
my ($c, $t,$at, $l,$al, $r,$ar) = @{ $v }{qw(c t at l al r ar)};
my @users = keys %{$v->{users}};
my $user = (@users==1) ? $users[0] : sprintf "%dusers",scalar @users;
my @hosts = keys %{$v->{hosts}};
my $host = (@hosts==1) ? $hosts[0] : sprintf "%dhosts",scalar @hosts;
printf "Count: %d Time=%.2fs (%ds) Lock=%.2fs (%ds) Rows=%.1f (%d), $user\@$host\n%s\n\n",
$c, $at,$t, $al,$l, $ar,$r, $_;
}
sub usage {
my $str= shift;
my $text= <<HERE;
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default
al: average lock time
ar: average rows sent
at: average query time
c: count
l: lock time
r: rows sent
t: query time
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don't subtract lock time from total time
HERE
if ($str) {
print STDERR "ERROR: $str\n\n";
print STDERR $text;
exit 1;
} else {
print $text;
exit 0;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,234 @@
===== Information about the build process: =====
Build was run at 2025-07-09 12:20:17Z
Build was done on Windows-10.0.20348 processor AMD64
Build was done using cmake 3.15.3
===== CMAKE_GENERATOR =====
Visual Studio 16 2019
===== Feature flags used: =====
-- Cache values
ABSL_BUILD_TESTING:BOOL=OFF
ABSL_BUILD_TEST_HELPERS:BOOL=OFF
ABSL_ENABLE_INSTALL:BOOL=OFF
ABSL_GOOGLETEST_DOWNLOAD_URL:STRING=
ABSL_LIBRT:FILEPATH=ABSL_LIBRT-NOTFOUND
ABSL_LOCAL_GOOGLETEST_DIR:PATH=/usr/src/googletest
ABSL_USE_EXTERNAL_GOOGLETEST:BOOL=OFF
ABSL_USE_GOOGLETEST_HEAD:BOOL=OFF
ABSL_USE_SYSTEM_INCLUDES:BOOL=OFF
ADD_GDB_INDEX:BOOL=OFF
BOOST_INCLUDE_DIR:PATH=C:/boost/boost_1_77_0
BUILD_SHARED_LIBS:BOOL=OFF
BUILD_TESTING:BOOL=ON
BUNDLE_MECAB:BOOL=ON
BUNDLE_RUNTIME_LIBRARIES:BOOL=OFF
CBOR_BUFFER_GROWTH:STRING=2
CBOR_CUSTOM_ALLOC:BOOL=OFF
CBOR_MAX_STACK_SIZE:STRING=2048
CCAPISERVER_EXECUTABLE:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/ccapiserver.exe
CHECK_ERRMSG_FORMAT:BOOL=OFF
CMAKE_CONFIGURATION_TYPES:STRING=DebugReleaseMinSizeRelRelWithDebInfo
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/MySQL
CMAKE_SKIP_INSTALL_ALL_DEPENDENCY:BOOL=OFF
COVERAGE:BOOL=OFF
CRYPTO_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/lib/libcrypto.lib
CTEST_EXECUTABLE:FILEPATH=C:/Program Files/CMake 3.15/bin/ctest.exe
DOWNLOAD_BOOST:BOOL=OFF
DOWNLOAD_BOOST_TIMEOUT:STRING=600
DUMPBIN_EXECUTABLE:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/dumpbin.exe
ENABLED_PROFILING:BOOL=ON
ENABLE_EXPERIMENT_SYSVARS:BOOL=OFF
ENABLE_GCOV:BOOL=OFF
ENABLE_GPROF:BOOL=OFF
EVENT__COVERAGE:BOOL=OFF
EVENT__DISABLE_BENCHMARK:BOOL=OFF
EVENT__DISABLE_CLOCK_GETTIME:BOOL=OFF
EVENT__DISABLE_DEBUG_MODE:BOOL=OFF
EVENT__DISABLE_MM_REPLACEMENT:BOOL=OFF
EVENT__DISABLE_OPENSSL:BOOL=OFF
EVENT__DISABLE_REGRESS:BOOL=OFF
EVENT__DISABLE_SAMPLES:BOOL=OFF
EVENT__DISABLE_TESTS:BOOL=OFF
EVENT__DISABLE_THREAD_SUPPORT:BOOL=OFF
EVENT__ENABLE_VERBOSE_DEBUG:BOOL=OFF
EVENT__FORCE_KQUEUE_CHECK:BOOL=OFF
EVENT__LIBRARY_TYPE:STRING=DEFAULT
EVENT__MSVC_STATIC_RUNTIME:BOOL=OFF
EXECINFO_LIBRARY:FILEPATH=EXECINFO_LIBRARY-NOTFOUND
EXTRA_NAME_SUFFIX:STRING=
FIDO_INCLUDE_DIR:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/mysql-8.0.43/extra/libfido2/libfido2-1.15.0/src
FLEX_EXECUTABLE:FILEPATH=C:/bin/bin/win_flex.exe
FLEX_INCLUDE_DIR:PATH=C:/bin/lib/winflexbison3/tools
FORCE_COLORED_OUTPUT:BOOL=OFF
FORCE_INSOURCE_BUILD:BOOL=ON
FPROFILE_GENERATE:BOOL=OFF
FPROFILE_USE:BOOL=OFF
FUZZ:BOOL=OFF
GLOB_RECURSE_SQL_HEADERS:BOOL=OFF
GSSAPI_INCLUDE_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/include
HANDLE_FATAL_SIGNALS:BOOL=ON
HARNESS_NAME:STRING=mysqlrouter
HAVE_CRYPTO_DLL:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/bin/libcrypto-3-x64.dll
HAVE_JEMALLOC_DLL:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep2/bin/jemalloc.dll
HAVE_LIBEVENT2:BOOL=1
HAVE_OPENSSL_DLL:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/bin/libssl-3-x64.dll
HAVE_jemalloc_PDB:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep2/bin/jemalloc.pdb
HAVE_libcrypto-3-x64_PDB:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/bin/libcrypto-3-x64.pdb
HAVE_libssl-3-x64_PDB:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/bin/libssl-3-x64.pdb
HUGE_FUZZ:BOOL=OFF
INSTALL_LAYOUT:STRING=STANDALONE
INSTALL_STATIC_LIBRARIES:BOOL=ON
KERBEROS_CUSTOM_DLL:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/krb5_64.dll
KERBEROS_CUSTOM_DLL_comerr64.dll:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/comerr64.dll
KERBEROS_CUSTOM_DLL_gssapi64.dll:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/gssapi64.dll
KERBEROS_CUSTOM_DLL_k5sprt64.dll:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/k5sprt64.dll
KERBEROS_CUSTOM_DLL_krbcc64.dll:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/krbcc64.dll
KERBEROS_CUSTOM_DLL_xpprof64.dll:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/bin/xpprof64.dll
KERBEROS_CUSTOM_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/krb5_64.lib
KERBEROS_CUSTOM_LIBRARY_comerr64.lib:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/comerr64.lib
KERBEROS_CUSTOM_LIBRARY_gssapi64.lib:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/gssapi64.lib
KERBEROS_CUSTOM_LIBRARY_k5sprt64.lib:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/k5sprt64.lib
KERBEROS_CUSTOM_LIBRARY_krbcc64.lib:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/krbcc64.lib
KERBEROS_CUSTOM_LIBRARY_xpprof64.lib:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/lib/xpprof64.lib
KERBEROS_INCLUDE_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit/include
KERBEROS_ROOT_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/krb5-1.21.3-windows-vs16-64bit
LINK_STATIC_RUNTIME_LIBRARIES:BOOL=OFF
LOCAL_BOOST_DIR:FILEPATH=C:/boost/boost_1_77_0
LOCAL_BOOST_ZIP:FILEPATH=LOCAL_BOOST_ZIP-NOTFOUND
MECAB_INCLUDE_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/mecab-0.996-windows-x86-64bit/sdk
MECAB_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/mecab-0.996-windows-x86-64bit/sdk/libmecab.lib
MSVC_CPPCHECK:BOOL=OFF
MUTEXTYPE:STRING=event
MYSQLX_ADDITIONAL_TESTS_ENABLE:BOOL=OFF
MYSQLX_GENERATE_DIR:STRING=C:/build/sb_1-20261897-1752061536.8734057/release/plugin/x/generated
MYSQL_DATADIR:PATH=C:/Program Files/MySQL/MySQL Server 8.0/data
MYSQL_ICU_DATADIR:PATH=C:/Program Files/MySQL/MySQL Server 8.0/lib/private
MYSQL_KEYRINGDIR:PATH=C:/Program Files/MySQL/MySQL Server 8.0/keyring
MYSQL_MAINTAINER_MODE:BOOL=OFF
MYSQL_ROUTER_INI:STRING=mysqlrouter.conf
MYSQL_ROUTER_NAME:STRING=MySQL Router
OPENSSL_APPLINK_C:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/include/openssl/applink.c
OPENSSL_EXECUTABLE:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/bin/openssl.exe
OPENSSL_INCLUDE_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/include
OPENSSL_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/dep3/lib/libssl.lib
OPENSSL_ROOT_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/dep3
OPTIMIZE_SANITIZER_BUILDS:BOOL=ON
PERL_EXECUTABLE:FILEPATH=C:/Perl64/bin/perl.exe
PRINT_FUZZ:BOOL=OFF
REDIRECT_DOXYGEN_STDOUT:BOOL=OFF
ROUTER_DATADIR:STRING=ENV{APPDATA}\\data
ROUTER_INSTALL_LAYOUT:STRING=STANDALONE
ROUTER_LOGDIR:STRING=ENV{APPDATA}\\log
ROUTER_PLUGINDIR:STRING=C:/Program Files (x86)/MySQL/lib
ROUTER_RUNTIMEDIR:STRING=ENV{APPDATA}
SANE_MALLOC:BOOL=OFF
SASL_CUSTOM_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit/lib/libsasl.lib
SASL_INCLUDE_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit/include
SASL_LIBRARY_DLL:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit/lib/libsasl.dll
SASL_ROOT_DIR:PATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit
SASL_SCRAM_PLUGIN:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit/lib/saslSCRAM.dll
SASL_STATIC_LIBRARY:FILEPATH=C:/build/sb_1-20261897-1752061536.8734057/cyrus-sasl-2.1.28-MD-windows-vs16-64bit/lib/libsasl.lib
SUNRPC_INCLUDE_DIRS:PATH=C:/build/sb_1-20261897-1752061536.8734057/mysql-8.0.43/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/sunrpcC:/build/sb_1-20261897-1752061536.8734057/mysql-8.0.43/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/sunrpc/rpc
TMPDIR:PATH=
USE_BISON_RESULTS_FROM_MAKE_DIST:BOOL=OFF
USE_HIDAPI:BOOL=OFF
USE_LD_LLD:BOOL=OFF
USE_PCSC:BOOL=OFF
WINDEPS_INCLUDE_DIRS:PATH=C:/build/sb_1-20261897-1752061536.8734057/mysql-8.0.43/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/include
WIN_DEBUG_NO_INLINE:BOOL=OFF
WIN_DEBUG_RTC:BOOL=OFF
WIN_INCREMENTAL_LINK:BOOL=OFF
WIN_STL_DEBUG_ITERATORS:STRING=2
WITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON
WITH_ASAN:BOOL=OFF
WITH_AUTHENTICATION_CLIENT_PLUGINS:BOOL=ON
WITH_AUTHENTICATION_FIDO:BOOL=OFF
WITH_AUTHENTICATION_KERBEROS:BOOL=OFF
WITH_AUTHENTICATION_LDAP:BOOL=1
WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON
WITH_BOOST:PATH=C:/boost
WITH_CLIENT_PROTOCOL_TRACING:BOOL=ON
WITH_CS_PROTOBUF:BOOL=OFF
WITH_CURL:STRING=none
WITH_DEBUG:BOOL=OFF
WITH_DEFAULT_COMPILER_OPTIONS:BOOL=ON
WITH_ERROR_INSERT:BOOL=OFF
WITH_EXT_BACKTRACE:BOOL=OFF
WITH_FEDERATED_STORAGE_ENGINE:BOOL=ON
WITH_FIDO:STRING=bundled
WITH_HYPERGRAPH_OPTIMIZER:BOOL=OFF
WITH_ICU:STRING=bundled
WITH_INNODB_EXTRA_DEBUG:BOOL=OFF
WITH_INNODB_MEMCACHED:BOOL=OFF
WITH_JEMALLOC:BOOL=OFF
WITH_JSON_BINLOG_LIBRARY:BOOL=OFF
WITH_KERBEROS:STRING=C:\build\sb_1-20261897-1752061536.8734057\krb5-1.21.3-windows-vs16-64bit
WITH_LDAP:STRING=system
WITH_LIBEVENT:STRING=bundled
WITH_LOCK_ORDER:BOOL=OFF
WITH_LSAN:BOOL=OFF
WITH_LTO:BOOL=OFF
WITH_LZ4:STRING=bundled
WITH_MECAB:STRING=C:\build\sb_1-20261897-1752061536.8734057\mecab-0.996-windows-x86-64bit
WITH_MECAB_PATH:PATH=C:/build/sb_1-20261897-1752061536.8734057/mecab-0.996-windows-x86-64bit
WITH_MSAN:BOOL=OFF
WITH_MSCRT_DEBUG:BOOL=OFF
WITH_MYSQLX:BOOL=ON
WITH_MYSQLX_USE_PROTOBUF_FULL:BOOL=OFF
WITH_NDB:BOOL=OFF
WITH_NDBCLUSTER_STORAGE_ENGINE:BOOL=ON
WITH_NDBMTD:BOOL=ON
WITH_NDB_CCFLAGS:STRING=
WITH_NDB_DEBUG:BOOL=OFF
WITH_NDB_JAVA:BOOL=OFF
WITH_NDB_PORT:STRING=
WITH_NGRAM_PARSER:BOOL=ON
WITH_NUMA:BOOL=OFF
WITH_PROTOBUF:STRING=bundled
WITH_RAPIDJSON:STRING=bundled
WITH_ROUTER:BOOL=ON
WITH_SHARED_UNITTEST_LIBRARY:BOOL=OFF
WITH_SSL_PATH:PATH=C:/build/sb_1-20261897-1752061536.8734057/dep3
WITH_SYSTEM_LIBS:BOOL=OFF
WITH_TCMALLOC:BOOL=OFF
WITH_TCMALLOC_DEBUG:BOOL=OFF
WITH_TESTS:BOOL=OFF
WITH_TEST_TRACE_PLUGIN:BOOL=OFF
WITH_TSAN:BOOL=OFF
WITH_UBSAN:BOOL=OFF
WITH_UNIT_TESTS:BOOL=ON
WITH_ZLIB:STRING=bundled
WITH_ZSTD:STRING=bundled
WIX_DIR:PATH=WIX_DIR-NOTFOUND
WSL_EXECUTABLE:FILEPATH=C:/Windows/System32/wsl.exe
XPLUGIN_LOG_PROTOBUF:STRING=1
ZLIB_BUILD_EXAMPLES:BOOL=ON
ZSTD_BUILD_CONTRIB:BOOL=OFF
ZSTD_BUILD_PROGRAMS:BOOL=ON
ZSTD_BUILD_TESTS:BOOL=OFF
ZSTD_LEGACY_SUPPORT:BOOL=OFF
ZSTD_MULTITHREAD_SUPPORT:BOOL=OFF
ZSTD_USE_STATIC_RUNTIME:BOOL=OFF
protobuf_ABSL_PROVIDER:STRING=module
protobuf_ALLOW_CCACHE:BOOL=OFF
protobuf_BUILD_CONFORMANCE:BOOL=OFF
protobuf_BUILD_LIBPROTOC:BOOL=OFF
protobuf_BUILD_PROTOBUF_BINARIES:BOOL=ON
protobuf_BUILD_PROTOC_BINARIES:BOOL=ON
protobuf_DISABLE_RTTI:BOOL=OFF
protobuf_INSTALL:BOOL=OFF
protobuf_JSONCPP_PROVIDER:STRING=module
protobuf_TEST_XML_OUTDIR:BOOL=OFF
utf8_range_ENABLE_INSTALL:BOOL=OFF
utf8_range_ENABLE_TESTS:BOOL=OFF
===== Compiler flags used: =====
CMAKE_BUILD_TYPE: RelWithDebInfo
Compiler: MSVC 19.29.30159.0
COMPILE_DEFINITIONS: _WIN32_WINNT=0x0601;WIN32_LEAN_AND_MEAN;NOGDI;NOMINMAX;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;_USE_MATH_DEFINES;LZ4_DISABLE_DEPRECATE_WARNINGS;HAVE_TLSv13
CMAKE_C_FLAGS: /DWIN32 /D_WINDOWS /W3 /MP -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS /wd4267 /wd4244
CMAKE_CXX_FLAGS: /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MP -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS /wd4267 /wd4244 /permissive-
CMAKE_C_FLAGS_RELWITHDEBINFO: /MD /Z7 /O2 /Ob1 /DNDEBUG /EHsc /FC
CMAKE_CXX_FLAGS_RELWITHDEBINFO: /MD /Z7 /O2 /Ob1 /DNDEBUG /EHsc /FC /std:c++17
===== EOF =====

View File

@@ -0,0 +1,7 @@
commit: 2ed0cbe8da72fab2da172283fd937220455ac824
date: 2025-07-09 09:34:45 +0200
build-date: 2025-07-09 08:46:56 +0000
short: 2ed0cbe8da72
branch: mysql-8.0.43-release
MySQL source 8.0.43

View File

@@ -0,0 +1,6 @@
CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY 'njcnpqs';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'njcnpqs';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SELECT User, Host FROM mysql.user WHERE User='root';

View File

@@ -0,0 +1,147 @@
#ifndef ERRMSG_INCLUDED
#define ERRMSG_INCLUDED
/* Copyright (c) 2000, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/**
@file include/errmsg.h
Error messages for MySQL clients.
These are constant and use the CR_ prefix.
<mysqlclient_ername.h> will contain auto-generated mappings
containing the symbolic name and the number from this file,
and the english error messages in libmysql/errmsg.c.
Dynamic error messages for the daemon are in share/language/errmsg.sys.
The server equivalent to <errmsg.h> is <mysqld_error.h>.
The server equivalent to <mysqlclient_ername.h> is <mysqld_ername.h>.
Note that the auth subsystem also uses codes with a CR_ prefix.
*/
void init_client_errs(void);
void finish_client_errs(void);
extern const char *client_errors[]; /* Error messages */
#define CR_MIN_ERROR 2000 /* For easier client code */
#define CR_MAX_ERROR 2999
#define CLIENT_ERRMAP 2 /* Errormap used by my_error() */
/* Do not add error numbers before CR_ERROR_FIRST. */
/* If necessary to add lower numbers, change CR_ERROR_FIRST accordingly. */
#define CR_ERROR_FIRST 2000 /*Copy first error nr.*/
#define CR_UNKNOWN_ERROR 2000
#define CR_SOCKET_CREATE_ERROR 2001
#define CR_CONNECTION_ERROR 2002
#define CR_CONN_HOST_ERROR 2003
#define CR_IPSOCK_ERROR 2004
#define CR_UNKNOWN_HOST 2005
#define CR_SERVER_GONE_ERROR 2006
#define CR_VERSION_ERROR 2007
#define CR_OUT_OF_MEMORY 2008
#define CR_WRONG_HOST_INFO 2009
#define CR_LOCALHOST_CONNECTION 2010
#define CR_TCP_CONNECTION 2011
#define CR_SERVER_HANDSHAKE_ERR 2012
#define CR_SERVER_LOST 2013
#define CR_COMMANDS_OUT_OF_SYNC 2014
#define CR_NAMEDPIPE_CONNECTION 2015
#define CR_NAMEDPIPEWAIT_ERROR 2016
#define CR_NAMEDPIPEOPEN_ERROR 2017
#define CR_NAMEDPIPESETSTATE_ERROR 2018
#define CR_CANT_READ_CHARSET 2019
#define CR_NET_PACKET_TOO_LARGE 2020
#define CR_EMBEDDED_CONNECTION 2021
#define CR_PROBE_REPLICA_STATUS 2022
#define CR_PROBE_REPLICA_HOSTS 2023
#define CR_PROBE_REPLICA_CONNECT 2024
#define CR_PROBE_SOURCE_CONNECT 2025
#define CR_SSL_CONNECTION_ERROR 2026
#define CR_MALFORMED_PACKET 2027
#define CR_WRONG_LICENSE 2028
/* new 4.1 error codes */
#define CR_NULL_POINTER 2029
#define CR_NO_PREPARE_STMT 2030
#define CR_PARAMS_NOT_BOUND 2031
#define CR_DATA_TRUNCATED 2032
#define CR_NO_PARAMETERS_EXISTS 2033
#define CR_INVALID_PARAMETER_NO 2034
#define CR_INVALID_BUFFER_USE 2035
#define CR_UNSUPPORTED_PARAM_TYPE 2036
#define CR_SHARED_MEMORY_CONNECTION 2037
#define CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR 2038
#define CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR 2039
#define CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR 2040
#define CR_SHARED_MEMORY_CONNECT_MAP_ERROR 2041
#define CR_SHARED_MEMORY_FILE_MAP_ERROR 2042
#define CR_SHARED_MEMORY_MAP_ERROR 2043
#define CR_SHARED_MEMORY_EVENT_ERROR 2044
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 2045
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR 2046
#define CR_CONN_UNKNOW_PROTOCOL 2047
#define CR_INVALID_CONN_HANDLE 2048
#define CR_UNUSED_1 2049
#define CR_FETCH_CANCELED 2050
#define CR_NO_DATA 2051
#define CR_NO_STMT_METADATA 2052
#define CR_NO_RESULT_SET 2053
#define CR_NOT_IMPLEMENTED 2054
#define CR_SERVER_LOST_EXTENDED 2055
#define CR_STMT_CLOSED 2056
#define CR_NEW_STMT_METADATA 2057
#define CR_ALREADY_CONNECTED 2058
#define CR_AUTH_PLUGIN_CANNOT_LOAD 2059
#define CR_DUPLICATE_CONNECTION_ATTR 2060
#define CR_AUTH_PLUGIN_ERR 2061
#define CR_INSECURE_API_ERR 2062
#define CR_FILE_NAME_TOO_LONG 2063
#define CR_SSL_FIPS_MODE_ERR 2064
#define CR_DEPRECATED_COMPRESSION_NOT_SUPPORTED 2065
#define CR_COMPRESSION_WRONGLY_CONFIGURED 2066
#define CR_KERBEROS_USER_NOT_FOUND 2067
#define CR_LOAD_DATA_LOCAL_INFILE_REJECTED 2068
#define CR_LOAD_DATA_LOCAL_INFILE_REALPATH_FAIL 2069
#define CR_DNS_SRV_LOOKUP_FAILED 2070
#define CR_MANDATORY_TRACKER_NOT_FOUND 2071
#define CR_INVALID_FACTOR_NO 2072
#define CR_CANT_GET_SESSION_DATA 2073
#define CR_INVALID_CLIENT_CHARSET 2074
#define CR_ERROR_LAST /*Copy last error nr:*/ 2074
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
/* Visual Studio requires '__inline' for C code */
static inline const char *ER_CLIENT(int client_errno) {
if (client_errno >= CR_ERROR_FIRST && client_errno <= CR_ERROR_LAST)
return client_errors[client_errno - CR_ERROR_FIRST];
return client_errors[CR_UNKNOWN_ERROR - CR_ERROR_FIRST];
}
#endif /* ERRMSG_INCLUDED */

View File

@@ -0,0 +1,96 @@
/* Copyright (c) 2014, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/**
@file field_types.h
@brief This file contains the field type.
@note This file can be imported both from C and C++ code, so the
definitions have to be constructed to support this.
*/
#ifndef FIELD_TYPES_INCLUDED
#define FIELD_TYPES_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
* Constants exported from this package.
*/
/**
Column types for MySQL
*/
enum enum_field_types {
MYSQL_TYPE_DECIMAL,
MYSQL_TYPE_TINY,
MYSQL_TYPE_SHORT,
MYSQL_TYPE_LONG,
MYSQL_TYPE_FLOAT,
MYSQL_TYPE_DOUBLE,
MYSQL_TYPE_NULL,
MYSQL_TYPE_TIMESTAMP,
MYSQL_TYPE_LONGLONG,
MYSQL_TYPE_INT24,
MYSQL_TYPE_DATE,
MYSQL_TYPE_TIME,
MYSQL_TYPE_DATETIME,
MYSQL_TYPE_YEAR,
MYSQL_TYPE_NEWDATE, /**< Internal to MySQL. Not used in protocol */
MYSQL_TYPE_VARCHAR,
MYSQL_TYPE_BIT,
MYSQL_TYPE_TIMESTAMP2,
MYSQL_TYPE_DATETIME2, /**< Internal to MySQL. Not used in protocol */
MYSQL_TYPE_TIME2, /**< Internal to MySQL. Not used in protocol */
MYSQL_TYPE_TYPED_ARRAY, /**< Used for replication only */
MYSQL_TYPE_INVALID = 243,
MYSQL_TYPE_BOOL = 244, /**< Currently just a placeholder */
MYSQL_TYPE_JSON = 245,
MYSQL_TYPE_NEWDECIMAL = 246,
MYSQL_TYPE_ENUM = 247,
MYSQL_TYPE_SET = 248,
MYSQL_TYPE_TINY_BLOB = 249,
MYSQL_TYPE_MEDIUM_BLOB = 250,
MYSQL_TYPE_LONG_BLOB = 251,
MYSQL_TYPE_BLOB = 252,
MYSQL_TYPE_VAR_STRING = 253,
MYSQL_TYPE_STRING = 254,
MYSQL_TYPE_GEOMETRY = 255
};
#ifdef __cplusplus
} // extern "C"
#else
typedef enum enum_field_types enum_field_types;
#endif /* __cplusplus */
#endif /* FIELD_TYPES_INCLUDED */

View File

@@ -0,0 +1,105 @@
/* Copyright (c) 2015, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef _mysql_command_h
#define _mysql_command_h
/**
@file include/my_command.h
*/
/**
@enum enum_server_command
@brief A list of all MySQL protocol commands.
These are the top level commands the server can receive
while it listens for a new command in ::dispatch_command
@par Warning
Add new commands to the end of this list, otherwise old
servers won't be able to handle them as 'unsupported'.
*/
enum enum_server_command {
/**
Currently refused by the server. See ::dispatch_command.
Also used internally to mark the start of a session.
*/
COM_SLEEP,
COM_QUIT, /**< See @ref page_protocol_com_quit */
COM_INIT_DB, /**< See @ref page_protocol_com_init_db */
COM_QUERY, /**< See @ref page_protocol_com_query */
COM_FIELD_LIST, /**< Deprecated. See @ref page_protocol_com_field_list */
COM_CREATE_DB, /**< Currently refused by the server. See ::dispatch_command */
COM_DROP_DB, /**< Currently refused by the server. See ::dispatch_command */
COM_REFRESH, /**< Deprecated. See @ref page_protocol_com_refresh */
COM_DEPRECATED_1, /**< Deprecated, used to be COM_SHUTDOWN */
COM_STATISTICS, /**< See @ref page_protocol_com_statistics */
COM_PROCESS_INFO, /**< Deprecated. See @ref page_protocol_com_process_info */
COM_CONNECT, /**< Currently refused by the server. */
COM_PROCESS_KILL, /**< Deprecated. See @ref page_protocol_com_process_kill */
COM_DEBUG, /**< See @ref page_protocol_com_debug */
COM_PING, /**< See @ref page_protocol_com_ping */
COM_TIME, /**< Currently refused by the server. */
COM_DELAYED_INSERT, /**< Functionality removed. */
COM_CHANGE_USER, /**< See @ref page_protocol_com_change_user */
COM_BINLOG_DUMP, /**< See @ref page_protocol_com_binlog_dump */
COM_TABLE_DUMP,
COM_CONNECT_OUT,
COM_REGISTER_SLAVE,
COM_STMT_PREPARE, /**< See @ref page_protocol_com_stmt_prepare */
COM_STMT_EXECUTE, /**< See @ref page_protocol_com_stmt_execute */
/** See @ref page_protocol_com_stmt_send_long_data */
COM_STMT_SEND_LONG_DATA,
COM_STMT_CLOSE, /**< See @ref page_protocol_com_stmt_close */
COM_STMT_RESET, /**< See @ref page_protocol_com_stmt_reset */
COM_SET_OPTION, /**< See @ref page_protocol_com_set_option */
COM_STMT_FETCH, /**< See @ref page_protocol_com_stmt_fetch */
/**
Currently refused by the server. See ::dispatch_command.
Also used internally to mark the session as a "daemon",
i.e. non-client THD. Currently the scheduler and the GTID
code does use this state.
These threads won't be killed by `KILL`
@sa Event_scheduler::start, ::init_thd, ::kill_one_thread,
::Find_thd_with_id
*/
COM_DAEMON,
COM_BINLOG_DUMP_GTID,
COM_RESET_CONNECTION, /**< See @ref page_protocol_com_reset_connection */
COM_CLONE,
COM_SUBSCRIBE_GROUP_REPLICATION_STREAM,
/* don't forget to update std::string Command_names::m_names[] in sql_parse.cc
*/
/* Must be last */
COM_END /**< Not a real command. Refused. */
};
#endif /* _mysql_command_h */

View File

@@ -0,0 +1,115 @@
/* Copyright (c) 2019, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef MY_COMPRESS_INCLUDED
#define MY_COMPRESS_INCLUDED
/* List of valid values for compression_algorithm */
enum enum_compression_algorithm {
MYSQL_UNCOMPRESSED = 1,
MYSQL_ZLIB,
MYSQL_ZSTD,
MYSQL_INVALID
};
/**
Compress context information. relating to zlib compression.
*/
typedef struct mysql_zlib_compress_context {
/**
Compression level to use in zlib compression.
*/
unsigned int compression_level;
} mysql_zlib_compress_context;
typedef struct ZSTD_CCtx_s ZSTD_CCtx;
typedef struct ZSTD_DCtx_s ZSTD_DCtx;
/**
Compress context information relating to zstd compression.
*/
typedef struct mysql_zstd_compress_context {
/**
Pointer to compressor context.
*/
ZSTD_CCtx *cctx;
/**
Pointer to decompressor context.
*/
ZSTD_DCtx *dctx;
/**
Compression level to use in zstd compression.
*/
unsigned int compression_level;
} mysql_zstd_compress_context;
/**
Compression context information.
It encapsulate the context information based on compression method and
presents a generic struct.
*/
typedef struct mysql_compress_context {
enum enum_compression_algorithm algorithm; ///< Compression algorithm name.
union {
mysql_zlib_compress_context zlib_ctx; ///< Context information of zlib.
mysql_zstd_compress_context zstd_ctx; ///< Context information of zstd.
} u;
} mysql_compress_context;
/**
Get default compression level corresponding to a given compression method.
@param algorithm Compression Method. Possible values are zlib or zstd.
@return an unsigned int representing default compression level.
6 is the default compression level for zlib and 3 is the
default compression level for zstd.
*/
unsigned int mysql_default_compression_level(
enum enum_compression_algorithm algorithm);
/**
Initialize a compress context object to be associated with a NET object.
@param cmp_ctx Pointer to compression context.
@param algorithm Compression algorithm.
@param compression_level Compression level corresponding to the compression
algorithm.
*/
void mysql_compress_context_init(mysql_compress_context *cmp_ctx,
enum enum_compression_algorithm algorithm,
unsigned int compression_level);
/**
Deinitialize the compression context allocated.
@param mysql_compress_ctx Pointer to Compression context.
*/
void mysql_compress_context_deinit(mysql_compress_context *mysql_compress_ctx);
#endif // MY_COMPRESS_INCLUDED

View File

@@ -0,0 +1,53 @@
/* Copyright (c) 2000, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef MY_LIST_INCLUDED
#define MY_LIST_INCLUDED
/**
@file include/my_list.h
*/
typedef struct LIST {
struct LIST *prev, *next;
void *data;
} LIST;
typedef int (*list_walk_action)(void *, void *);
extern LIST *list_add(LIST *root, LIST *element);
extern LIST *list_delete(LIST *root, LIST *element);
extern LIST *list_cons(void *data, LIST *root);
extern LIST *list_reverse(LIST *root);
extern void list_free(LIST *root, unsigned int free_data);
extern unsigned int list_length(LIST *);
extern int list_walk(LIST *, list_walk_action action, unsigned char *argument);
#define list_rest(a) ((a)->next)
#endif // MY_LIST_INCLUDED

View File

@@ -0,0 +1,818 @@
/* Copyright (c) 2000, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/**
@file include/mysql.h
This file defines the client API to MySQL and also the ABI of the
dynamically linked libmysqlclient.
The ABI should never be changed in a released product of MySQL,
thus you need to take great care when changing the file. In case
the file is changed so the ABI is broken, you must also update
the SHARED_LIB_MAJOR_VERSION in cmake/mysql_version.cmake
*/
#ifndef _mysql_h
#define _mysql_h
#ifndef MYSQL_ABI_CHECK
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/types.h>
#endif
// Legacy definition for the benefit of old code. Use uint64_t in new code.
// If you get warnings from printf, use the PRIu64 macro, or, if you need
// compatibility with older versions of the client library, cast
// before printing.
typedef uint64_t my_ulonglong;
#ifndef my_socket_defined
#define my_socket_defined
#if defined(_WIN32) && !defined(MYSQL_ABI_CHECK)
#include <windows.h>
#ifdef WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#endif
#define my_socket SOCKET
#else
typedef int my_socket;
#endif /* _WIN32 && ! MYSQL_ABI_CHECK */
#endif /* my_socket_defined */
// Small extra definition to avoid pulling in my_compiler.h in client code.
// IWYU pragma: no_include "my_compiler.h"
#ifndef MY_COMPILER_INCLUDED
#if !defined(_WIN32) || defined(MYSQL_ABI_CHECK)
#define STDCALL
#else
#define STDCALL __stdcall
#endif
#endif /* MY_COMPILER_INCLUDED */
#include "field_types.h"
#include "my_list.h"
#include "mysql_com.h"
/* Include declarations of plug-in API */
#include "mysql/client_plugin.h" // IWYU pragma: keep
/*
The client should be able to know which version it is compiled against,
even if mysql.h doesn't use this information directly.
*/
#include "mysql_version.h" // IWYU pragma: keep
// MYSQL_TIME is part of our public API.
#include "mysql_time.h" // IWYU pragma: keep
// The error messages are part of our public API.
#include "errmsg.h" // IWYU pragma: keep
#ifdef __cplusplus
extern "C" {
#endif
extern unsigned int mysql_port;
extern char *mysql_unix_port;
#define CLIENT_NET_RETRY_COUNT 1 /* Retry count */
#define CLIENT_NET_READ_TIMEOUT 365 * 24 * 3600 /* Timeout on read */
#define CLIENT_NET_WRITE_TIMEOUT 365 * 24 * 3600 /* Timeout on write */
#define IS_PRI_KEY(n) ((n)&PRI_KEY_FLAG)
#define IS_NOT_NULL(n) ((n)&NOT_NULL_FLAG)
#define IS_BLOB(n) ((n)&BLOB_FLAG)
/**
Returns true if the value is a number which does not need quotes for
the sql_lex.cc parser to parse correctly.
*/
#define IS_NUM(t) \
(((t) <= MYSQL_TYPE_INT24 && (t) != MYSQL_TYPE_TIMESTAMP) || \
(t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)
typedef struct MYSQL_FIELD {
char *name; /* Name of column */
char *org_name; /* Original column name, if an alias */
char *table; /* Table of column if column was a field */
char *org_table; /* Org table name, if table was an alias */
char *db; /* Database for table */
char *catalog; /* Catalog for table */
char *def; /* Default value (set by mysql_list_fields) */
unsigned long length; /* Width of column (create length) */
unsigned long max_length; /* Max width for selected set */
unsigned int name_length;
unsigned int org_name_length;
unsigned int table_length;
unsigned int org_table_length;
unsigned int db_length;
unsigned int catalog_length;
unsigned int def_length;
unsigned int flags; /* Div flags */
unsigned int decimals; /* Number of decimals in field */
unsigned int charsetnr; /* Character set */
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
void *extension;
} MYSQL_FIELD;
typedef char **MYSQL_ROW; /* return data as array of strings */
typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
#define MYSQL_COUNT_ERROR (~(uint64_t)0)
/* backward compatibility define - to be removed eventually */
#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED
typedef struct MYSQL_ROWS {
struct MYSQL_ROWS *next; /* list of rows */
MYSQL_ROW data;
unsigned long length;
} MYSQL_ROWS;
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
struct MEM_ROOT;
typedef struct MYSQL_DATA {
MYSQL_ROWS *data;
struct MEM_ROOT *alloc;
uint64_t rows;
unsigned int fields;
} MYSQL_DATA;
enum mysql_option {
MYSQL_OPT_CONNECT_TIMEOUT,
MYSQL_OPT_COMPRESS,
MYSQL_OPT_NAMED_PIPE,
MYSQL_INIT_COMMAND,
MYSQL_READ_DEFAULT_FILE,
MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR,
MYSQL_SET_CHARSET_NAME,
MYSQL_OPT_LOCAL_INFILE,
MYSQL_OPT_PROTOCOL,
MYSQL_SHARED_MEMORY_BASE_NAME,
MYSQL_OPT_READ_TIMEOUT,
MYSQL_OPT_WRITE_TIMEOUT,
MYSQL_OPT_USE_RESULT,
MYSQL_REPORT_DATA_TRUNCATION,
MYSQL_OPT_RECONNECT,
MYSQL_PLUGIN_DIR,
MYSQL_DEFAULT_AUTH,
MYSQL_OPT_BIND,
MYSQL_OPT_SSL_KEY,
MYSQL_OPT_SSL_CERT,
MYSQL_OPT_SSL_CA,
MYSQL_OPT_SSL_CAPATH,
MYSQL_OPT_SSL_CIPHER,
MYSQL_OPT_SSL_CRL,
MYSQL_OPT_SSL_CRLPATH,
MYSQL_OPT_CONNECT_ATTR_RESET,
MYSQL_OPT_CONNECT_ATTR_ADD,
MYSQL_OPT_CONNECT_ATTR_DELETE,
MYSQL_SERVER_PUBLIC_KEY,
MYSQL_ENABLE_CLEARTEXT_PLUGIN,
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
MYSQL_OPT_MAX_ALLOWED_PACKET,
MYSQL_OPT_NET_BUFFER_LENGTH,
MYSQL_OPT_TLS_VERSION,
MYSQL_OPT_SSL_MODE,
MYSQL_OPT_GET_SERVER_PUBLIC_KEY,
MYSQL_OPT_RETRY_COUNT,
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA,
MYSQL_OPT_SSL_FIPS_MODE,
MYSQL_OPT_TLS_CIPHERSUITES,
MYSQL_OPT_COMPRESSION_ALGORITHMS,
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL,
MYSQL_OPT_LOAD_DATA_LOCAL_DIR,
MYSQL_OPT_USER_PASSWORD,
MYSQL_OPT_SSL_SESSION_DATA
};
/**
@todo remove the "extension", move st_mysql_options completely
out of mysql.h
*/
struct st_mysql_options_extention;
struct st_mysql_options {
unsigned int connect_timeout, read_timeout, write_timeout;
unsigned int port, protocol;
unsigned long client_flag;
char *host, *user, *password, *unix_socket, *db;
struct Init_commands_array *init_commands;
char *my_cnf_file, *my_cnf_group, *charset_dir, *charset_name;
char *ssl_key; /* PEM key file */
char *ssl_cert; /* PEM cert file */
char *ssl_ca; /* PEM CA file */
char *ssl_capath; /* PEM directory of CA-s? */
char *ssl_cipher; /* cipher to use */
char *shared_memory_base_name;
unsigned long max_allowed_packet;
bool compress, named_pipe;
/**
The local address to bind when connecting to remote server.
*/
char *bind_address;
/* 0 - never report, 1 - always report (default) */
bool report_data_truncation;
/* function pointers for local infile support */
int (*local_infile_init)(void **, const char *, void *);
int (*local_infile_read)(void *, char *, unsigned int);
void (*local_infile_end)(void *);
int (*local_infile_error)(void *, char *, unsigned int);
void *local_infile_userdata;
struct st_mysql_options_extention *extension;
};
enum mysql_status {
MYSQL_STATUS_READY,
MYSQL_STATUS_GET_RESULT,
MYSQL_STATUS_USE_RESULT,
MYSQL_STATUS_STATEMENT_GET_RESULT
};
enum mysql_protocol_type {
MYSQL_PROTOCOL_DEFAULT,
MYSQL_PROTOCOL_TCP,
MYSQL_PROTOCOL_SOCKET,
MYSQL_PROTOCOL_PIPE,
MYSQL_PROTOCOL_MEMORY
};
enum mysql_ssl_mode {
SSL_MODE_DISABLED = 1,
SSL_MODE_PREFERRED,
SSL_MODE_REQUIRED,
SSL_MODE_VERIFY_CA,
SSL_MODE_VERIFY_IDENTITY
};
enum mysql_ssl_fips_mode {
SSL_FIPS_MODE_OFF = 0,
SSL_FIPS_MODE_ON = 1,
SSL_FIPS_MODE_STRICT
};
typedef struct character_set {
unsigned int number; /* character set number */
unsigned int state; /* character set state */
const char *csname; /* character set name */
const char *name; /* collation name */
const char *comment; /* comment */
const char *dir; /* character set directory */
unsigned int mbminlen; /* min. length for multibyte strings */
unsigned int mbmaxlen; /* max. length for multibyte strings */
} MY_CHARSET_INFO;
struct MYSQL_METHODS;
struct MYSQL_STMT;
typedef struct MYSQL {
NET net; /* Communication parameters */
unsigned char *connector_fd; /* ConnectorFd for SSL */
char *host, *user, *passwd, *unix_socket, *server_version, *host_info;
char *info, *db;
struct CHARSET_INFO *charset;
MYSQL_FIELD *fields;
struct MEM_ROOT *field_alloc;
uint64_t affected_rows;
uint64_t insert_id; /* id if insert on table with NEXTNR */
uint64_t extra_info; /* Not used */
unsigned long thread_id; /* Id for connection in server */
unsigned long packet_length;
unsigned int port;
unsigned long client_flag, server_capabilities;
unsigned int protocol_version;
unsigned int field_count;
unsigned int server_status;
unsigned int server_language;
unsigned int warning_count;
struct st_mysql_options options;
enum mysql_status status;
enum enum_resultset_metadata resultset_metadata;
bool free_me; /* If free in mysql_close */
bool reconnect; /* set to 1 if automatic reconnect */
/* session-wide random string */
char scramble[SCRAMBLE_LENGTH + 1];
LIST *stmts; /* list of all statements */
const struct MYSQL_METHODS *methods;
void *thd;
/*
Points to boolean flag in MYSQL_RES or MYSQL_STMT. We set this flag
from mysql_stmt_close if close had to cancel result set of this object.
*/
bool *unbuffered_fetch_owner;
void *extension;
} MYSQL;
typedef struct MYSQL_RES {
uint64_t row_count;
MYSQL_FIELD *fields;
struct MYSQL_DATA *data;
MYSQL_ROWS *data_cursor;
unsigned long *lengths; /* column lengths of current row */
MYSQL *handle; /* for unbuffered reads */
const struct MYSQL_METHODS *methods;
MYSQL_ROW row; /* If unbuffered read */
MYSQL_ROW current_row; /* buffer to current row */
struct MEM_ROOT *field_alloc;
unsigned int field_count, current_field;
bool eof; /* Used by mysql_fetch_row */
/* mysql_stmt_close() had to cancel this result */
bool unbuffered_fetch_cancelled;
enum enum_resultset_metadata metadata;
void *extension;
} MYSQL_RES;
/**
Flag to indicate that COM_BINLOG_DUMP_GTID should
be used rather than COM_BINLOG_DUMP in the @sa mysql_binlog_open().
*/
#define MYSQL_RPL_GTID (1 << 16)
/**
Skip HEARBEAT events in the @sa mysql_binlog_fetch().
*/
#define MYSQL_RPL_SKIP_HEARTBEAT (1 << 17)
/**
Flag to indicate that the heartbeat_event being generated
is using the class Heartbeat_event_v2
*/
#define USE_HEARTBEAT_EVENT_V2 (1 << 1)
/**
Struct for information about a replication stream.
@sa mysql_binlog_open()
@sa mysql_binlog_fetch()
@sa mysql_binlog_close()
*/
typedef struct MYSQL_RPL {
size_t file_name_length; /** Length of the 'file_name' or 0 */
const char *file_name; /** Filename of the binary log to read */
uint64_t start_position; /** Position in the binary log to */
/* start reading from */
unsigned int server_id; /** Server ID to use when identifying */
/* with the master */
unsigned int flags; /** Flags, e.g. MYSQL_RPL_GTID */
/** Size of gtid set data */
size_t gtid_set_encoded_size;
/** Callback function which is called */
/* from @sa mysql_binlog_open() to */
/* fill command packet gtid set */
void (*fix_gtid_set)(struct MYSQL_RPL *rpl, unsigned char *packet_gtid_set);
void *gtid_set_arg; /** GTID set data or an argument for */
/* fix_gtid_set() callback function */
unsigned long size; /** Size of the packet returned by */
/* mysql_binlog_fetch() */
const unsigned char *buffer; /** Pointer to returned data */
} MYSQL_RPL;
/*
Set up and bring down the server; to ensure that applications will
work when linked against either the standard client library or the
embedded server library, these functions should be called.
*/
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
void STDCALL mysql_server_end(void);
/*
mysql_server_init/end need to be called when using libmysqld or
libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
you don't need to call it explicitly; but you need to call
mysql_server_end() to free memory). The names are a bit misleading
(mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
names which suit well whether you're using libmysqld or libmysqlclient. We
intend to promote these aliases over the mysql_server* ones.
*/
#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end
/*
Set up and bring down a thread; these function should be called
for each thread in an application which opens at least one MySQL
connection. All uses of the connection(s) should be between these
function calls.
*/
bool STDCALL mysql_thread_init(void);
void STDCALL mysql_thread_end(void);
/*
Functions to get information from the MYSQL and MYSQL_RES structures
Should definitely be used if one uses shared libraries.
*/
uint64_t STDCALL mysql_num_rows(MYSQL_RES *res);
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
bool STDCALL mysql_eof(MYSQL_RES *res);
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
unsigned int fieldnr);
MYSQL_FIELD *STDCALL mysql_fetch_fields(MYSQL_RES *res);
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);
enum enum_resultset_metadata STDCALL mysql_result_metadata(MYSQL_RES *result);
unsigned int STDCALL mysql_field_count(MYSQL *mysql);
uint64_t STDCALL mysql_affected_rows(MYSQL *mysql);
uint64_t STDCALL mysql_insert_id(MYSQL *mysql);
unsigned int STDCALL mysql_errno(MYSQL *mysql);
const char *STDCALL mysql_error(MYSQL *mysql);
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
const char *STDCALL mysql_info(MYSQL *mysql);
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
const char *STDCALL mysql_character_set_name(MYSQL *mysql);
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
MYSQL *STDCALL mysql_init(MYSQL *mysql);
#if defined(__cplusplus) && (__cplusplus >= 201402L)
[[deprecated("Use mysql_options() instead.")]]
#endif
bool STDCALL
mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca,
const char *capath, const char *cipher);
const char *STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
bool STDCALL mysql_get_ssl_session_reused(MYSQL *mysql);
void *STDCALL mysql_get_ssl_session_data(MYSQL *mysql, unsigned int n_ticket,
unsigned int *out_len);
bool STDCALL mysql_free_ssl_session_data(MYSQL *mysql, void *data);
bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
const char *passwd, const char *db);
MYSQL *STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
const char *user, const char *passwd,
const char *db, unsigned int port,
const char *unix_socket,
unsigned long clientflag);
int STDCALL mysql_select_db(MYSQL *mysql, const char *db);
int STDCALL mysql_query(MYSQL *mysql, const char *q);
int STDCALL mysql_send_query(MYSQL *mysql, const char *q, unsigned long length);
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
MYSQL_RES *STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES *STDCALL mysql_use_result(MYSQL *mysql);
enum net_async_status STDCALL mysql_real_connect_nonblocking(
MYSQL *mysql, const char *host, const char *user, const char *passwd,
const char *db, unsigned int port, const char *unix_socket,
unsigned long clientflag);
enum net_async_status STDCALL mysql_send_query_nonblocking(
MYSQL *mysql, const char *query, unsigned long length);
enum net_async_status STDCALL mysql_real_query_nonblocking(
MYSQL *mysql, const char *query, unsigned long length);
enum net_async_status STDCALL
mysql_store_result_nonblocking(MYSQL *mysql, MYSQL_RES **result);
enum net_async_status STDCALL mysql_next_result_nonblocking(MYSQL *mysql);
enum net_async_status STDCALL mysql_select_db_nonblocking(MYSQL *mysql,
const char *db,
bool *error);
void STDCALL mysql_get_character_set_info(MYSQL *mysql,
MY_CHARSET_INFO *charset);
int STDCALL mysql_session_track_get_first(MYSQL *mysql,
enum enum_session_state_type type,
const char **data, size_t *length);
int STDCALL mysql_session_track_get_next(MYSQL *mysql,
enum enum_session_state_type type,
const char **data, size_t *length);
/* local infile support */
#define LOCAL_INFILE_ERROR_LEN 512
void mysql_set_local_infile_handler(
MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *),
int (*local_infile_read)(void *, char *, unsigned int),
void (*local_infile_end)(void *),
int (*local_infile_error)(void *, char *, unsigned int), void *);
void mysql_set_local_infile_default(MYSQL *mysql);
int STDCALL mysql_shutdown(MYSQL *mysql,
enum mysql_enum_shutdown_level shutdown_level);
int STDCALL mysql_dump_debug_info(MYSQL *mysql);
int STDCALL mysql_refresh(MYSQL *mysql, unsigned int refresh_options);
int STDCALL mysql_kill(MYSQL *mysql, unsigned long pid);
int STDCALL mysql_set_server_option(MYSQL *mysql,
enum enum_mysql_set_option option);
int STDCALL mysql_ping(MYSQL *mysql);
const char *STDCALL mysql_stat(MYSQL *mysql);
const char *STDCALL mysql_get_server_info(MYSQL *mysql);
const char *STDCALL mysql_get_client_info(void);
unsigned long STDCALL mysql_get_client_version(void);
const char *STDCALL mysql_get_host_info(MYSQL *mysql);
unsigned long STDCALL mysql_get_server_version(MYSQL *mysql);
unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);
MYSQL_RES *STDCALL mysql_list_dbs(MYSQL *mysql, const char *wild);
MYSQL_RES *STDCALL mysql_list_tables(MYSQL *mysql, const char *wild);
MYSQL_RES *STDCALL mysql_list_processes(MYSQL *mysql);
int STDCALL mysql_options(MYSQL *mysql, enum mysql_option option,
const void *arg);
int STDCALL mysql_options4(MYSQL *mysql, enum mysql_option option,
const void *arg1, const void *arg2);
int STDCALL mysql_get_option(MYSQL *mysql, enum mysql_option option,
const void *arg);
void STDCALL mysql_free_result(MYSQL_RES *result);
enum net_async_status STDCALL mysql_free_result_nonblocking(MYSQL_RES *result);
void STDCALL mysql_data_seek(MYSQL_RES *result, uint64_t offset);
MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result,
MYSQL_ROW_OFFSET offset);
MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result,
MYSQL_FIELD_OFFSET offset);
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
enum net_async_status STDCALL mysql_fetch_row_nonblocking(MYSQL_RES *res,
MYSQL_ROW *row);
unsigned long *STDCALL mysql_fetch_lengths(MYSQL_RES *result);
MYSQL_FIELD *STDCALL mysql_fetch_field(MYSQL_RES *result);
MYSQL_RES *STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
const char *wild);
unsigned long STDCALL mysql_escape_string(char *to, const char *from,
unsigned long from_length);
unsigned long STDCALL mysql_hex_string(char *to, const char *from,
unsigned long from_length);
unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql, char *to,
const char *from,
unsigned long length);
unsigned long STDCALL mysql_real_escape_string_quote(MYSQL *mysql, char *to,
const char *from,
unsigned long length,
char quote);
void STDCALL mysql_debug(const char *debug);
void STDCALL myodbc_remove_escape(MYSQL *mysql, char *name);
unsigned int STDCALL mysql_thread_safe(void);
bool STDCALL mysql_read_query_result(MYSQL *mysql);
int STDCALL mysql_reset_connection(MYSQL *mysql);
int STDCALL mysql_binlog_open(MYSQL *mysql, MYSQL_RPL *rpl);
int STDCALL mysql_binlog_fetch(MYSQL *mysql, MYSQL_RPL *rpl);
void STDCALL mysql_binlog_close(MYSQL *mysql, MYSQL_RPL *rpl);
/*
The following definitions are added for the enhanced
client-server protocol
*/
/* statement state */
enum enum_mysql_stmt_state {
MYSQL_STMT_INIT_DONE = 1,
MYSQL_STMT_PREPARE_DONE,
MYSQL_STMT_EXECUTE_DONE,
MYSQL_STMT_FETCH_DONE
};
/*
This structure is used to define bind information, and
internally by the client library.
Public members with their descriptions are listed below
(conventionally `On input' refers to the binds given to
mysql_stmt_bind_param, `On output' refers to the binds given
to mysql_stmt_bind_result):
buffer_type - One of the MYSQL_* types, used to describe
the host language type of buffer.
On output: if column type is different from
buffer_type, column value is automatically converted
to buffer_type before it is stored in the buffer.
buffer - On input: points to the buffer with input data.
On output: points to the buffer capable to store
output data.
The type of memory pointed by buffer must correspond
to buffer_type. See the correspondence table in
the comment to mysql_stmt_bind_param.
The two above members are mandatory for any kind of bind.
buffer_length - the length of the buffer. You don't have to set
it for any fixed length buffer: float, double,
int, etc. It must be set however for variable-length
types, such as BLOBs or STRINGs.
length - On input: in case when lengths of input values
are different for each execute, you can set this to
point at a variable containing value length. This
way the value length can be different in each execute.
If length is not NULL, buffer_length is not used.
Note, length can even point at buffer_length if
you keep bind structures around while fetching:
this way you can change buffer_length before
each execution, everything will work ok.
On output: if length is set, mysql_stmt_fetch will
write column length into it.
is_null - On input: points to a boolean variable that should
be set to TRUE for NULL values.
This member is useful only if your data may be
NULL in some but not all cases.
If your data is never NULL, is_null should be set to 0.
If your data is always NULL, set buffer_type
to MYSQL_TYPE_NULL, and is_null will not be used.
is_unsigned - On input: used to signify that values provided for one
of numeric types are unsigned.
On output describes signedness of the output buffer.
If, taking into account is_unsigned flag, column data
is out of range of the output buffer, data for this column
is regarded truncated. Note that this has no correspondence
to the sign of result set column, if you need to find it out
use mysql_stmt_result_metadata.
error - where to write a truncation error if it is present.
possible error value is:
0 no truncation
1 value is out of range or buffer is too small
Please note that MYSQL_BIND also has internals members.
*/
typedef struct MYSQL_BIND {
unsigned long *length; /* output length pointer */
bool *is_null; /* Pointer to null indicator */
void *buffer; /* buffer to get/put data */
/* set this if you want to track data truncations happened during fetch */
bool *error;
unsigned char *row_ptr; /* for the current data position */
void (*store_param_func)(NET *net, struct MYSQL_BIND *param);
void (*fetch_result)(struct MYSQL_BIND *, MYSQL_FIELD *, unsigned char **row);
void (*skip_result)(struct MYSQL_BIND *, MYSQL_FIELD *, unsigned char **row);
/* output buffer length, must be set when fetching str/binary */
unsigned long buffer_length;
unsigned long offset; /* offset position for char/binary fetch */
unsigned long length_value; /* Used if length is 0 */
unsigned int param_number; /* For null count and error messages */
unsigned int pack_length; /* Internal length for packed data */
enum enum_field_types buffer_type; /* buffer type */
bool error_value; /* used if error is 0 */
bool is_unsigned; /* set if integer type is unsigned */
bool long_data_used; /* If used with mysql_send_long_data */
bool is_null_value; /* Used if is_null is 0 */
void *extension;
} MYSQL_BIND;
struct MYSQL_STMT_EXT;
/* statement handler */
typedef struct MYSQL_STMT {
struct MEM_ROOT *mem_root; /* root allocations */
LIST list; /* list to keep track of all stmts */
MYSQL *mysql; /* connection handle */
MYSQL_BIND *params; /* input parameters */
MYSQL_BIND *bind; /* output parameters */
MYSQL_FIELD *fields; /* result set metadata */
MYSQL_DATA result; /* cached result set */
MYSQL_ROWS *data_cursor; /* current row in cached result */
/*
mysql_stmt_fetch() calls this function to fetch one row (it's different
for buffered, unbuffered and cursor fetch).
*/
int (*read_row_func)(struct MYSQL_STMT *stmt, unsigned char **row);
/* copy of mysql->affected_rows after statement execution */
uint64_t affected_rows;
uint64_t insert_id; /* copy of mysql->insert_id */
unsigned long stmt_id; /* Id for prepared statement */
unsigned long flags; /* i.e. type of cursor to open */
unsigned long prefetch_rows; /* number of rows per one COM_FETCH */
/*
Copied from mysql->server_status after execute/fetch to know
server-side cursor status for this statement.
*/
unsigned int server_status;
unsigned int last_errno; /* error code */
unsigned int param_count; /* input parameter count */
unsigned int field_count; /* number of columns in result set */
enum enum_mysql_stmt_state state; /* statement state */
char last_error[MYSQL_ERRMSG_SIZE]; /* error message */
char sqlstate[SQLSTATE_LENGTH + 1];
/* Types of input parameters should be sent to server */
bool send_types_to_server;
bool bind_param_done; /* input buffers were supplied */
unsigned char bind_result_done; /* output buffers were supplied */
/* mysql_stmt_close() had to cancel this result */
bool unbuffered_fetch_cancelled;
/*
Is set to true if we need to calculate field->max_length for
metadata fields when doing mysql_stmt_store_result.
*/
bool update_max_length;
struct MYSQL_STMT_EXT *extension;
} MYSQL_STMT;
enum enum_stmt_attr_type {
/*
When doing mysql_stmt_store_result calculate max_length attribute
of statement metadata. This is to be consistent with the old API,
where this was done automatically.
In the new API we do that only by request because it slows down
mysql_stmt_store_result sufficiently.
*/
STMT_ATTR_UPDATE_MAX_LENGTH,
/*
unsigned long with combination of cursor flags (read only, for update,
etc)
*/
STMT_ATTR_CURSOR_TYPE,
/*
Amount of rows to retrieve from server per one fetch if using cursors.
Accepts unsigned long attribute in the range 1 - ulong_max
*/
STMT_ATTR_PREFETCH_ROWS
};
bool STDCALL mysql_bind_param(MYSQL *mysql, unsigned n_params,
MYSQL_BIND *binds, const char **names);
MYSQL_STMT *STDCALL mysql_stmt_init(MYSQL *mysql);
int STDCALL mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query,
unsigned long length);
int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg,
unsigned int column, unsigned long offset);
int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt);
unsigned long STDCALL mysql_stmt_param_count(MYSQL_STMT *stmt);
bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
const void *attr);
bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
enum enum_stmt_attr_type attr_type,
void *attr);
bool STDCALL mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bnd);
bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bnd);
bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt);
bool STDCALL mysql_stmt_reset(MYSQL_STMT *stmt);
bool STDCALL mysql_stmt_free_result(MYSQL_STMT *stmt);
bool STDCALL mysql_stmt_send_long_data(MYSQL_STMT *stmt,
unsigned int param_number,
const char *data, unsigned long length);
MYSQL_RES *STDCALL mysql_stmt_result_metadata(MYSQL_STMT *stmt);
MYSQL_RES *STDCALL mysql_stmt_param_metadata(MYSQL_STMT *stmt);
unsigned int STDCALL mysql_stmt_errno(MYSQL_STMT *stmt);
const char *STDCALL mysql_stmt_error(MYSQL_STMT *stmt);
const char *STDCALL mysql_stmt_sqlstate(MYSQL_STMT *stmt);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_seek(MYSQL_STMT *stmt,
MYSQL_ROW_OFFSET offset);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_tell(MYSQL_STMT *stmt);
void STDCALL mysql_stmt_data_seek(MYSQL_STMT *stmt, uint64_t offset);
uint64_t STDCALL mysql_stmt_num_rows(MYSQL_STMT *stmt);
uint64_t STDCALL mysql_stmt_affected_rows(MYSQL_STMT *stmt);
uint64_t STDCALL mysql_stmt_insert_id(MYSQL_STMT *stmt);
unsigned int STDCALL mysql_stmt_field_count(MYSQL_STMT *stmt);
bool STDCALL mysql_commit(MYSQL *mysql);
bool STDCALL mysql_rollback(MYSQL *mysql);
bool STDCALL mysql_autocommit(MYSQL *mysql, bool auto_mode);
bool STDCALL mysql_more_results(MYSQL *mysql);
int STDCALL mysql_next_result(MYSQL *mysql);
int STDCALL mysql_stmt_next_result(MYSQL_STMT *stmt);
void STDCALL mysql_close(MYSQL *sock);
/* Public key reset */
void STDCALL mysql_reset_server_public_key(void);
/* status return codes */
#define MYSQL_NO_DATA 100
#define MYSQL_DATA_TRUNCATED 101
#define mysql_reload(mysql) mysql_refresh((mysql), REFRESH_GRANT)
#define HAVE_MYSQL_REAL_CONNECT
MYSQL *STDCALL mysql_real_connect_dns_srv(MYSQL *mysql,
const char *dns_srv_name,
const char *user, const char *passwd,
const char *db,
unsigned long client_flag);
#ifdef __cplusplus
}
#endif
#endif /* _mysql_h */

View File

@@ -0,0 +1,236 @@
#ifndef MYSQL_CLIENT_PLUGIN_INCLUDED
/* Copyright (c) 2010, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/**
@file include/mysql/client_plugin.h
MySQL Client Plugin API.
This file defines the API for plugins that work on the client side
*/
#define MYSQL_CLIENT_PLUGIN_INCLUDED
#ifndef MYSQL_ABI_CHECK
#include <stdarg.h>
#include <stdlib.h>
#endif
/*
On Windows, exports from DLL need to be declared.
Also, plugin needs to be declared as extern "C" because MSVC
unlike other compilers, uses C++ mangling for variables not only
for functions.
*/
#if defined(_MSC_VER)
#if defined(MYSQL_DYNAMIC_CLIENT_PLUGIN)
#ifdef __cplusplus
#define MYSQL_CLIENT_PLUGIN_EXPORT extern "C" __declspec(dllexport)
#else
#define MYSQL_CLIENT_PLUGIN_EXPORT __declspec(dllexport)
#endif
#else /* MYSQL_DYNAMIC_CLIENT_PLUGIN */
#ifdef __cplusplus
#define MYSQL_CLIENT_PLUGIN_EXPORT extern "C"
#else
#define MYSQL_CLIENT_PLUGIN_EXPORT
#endif
#endif /*MYSQL_DYNAMIC_CLIENT_PLUGIN */
#else /*_MSC_VER */
#if defined(MYSQL_DYNAMIC_CLIENT_PLUGIN)
#define MYSQL_CLIENT_PLUGIN_EXPORT MY_ATTRIBUTE((visibility("default")))
#else
#define MYSQL_CLIENT_PLUGIN_EXPORT
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* known plugin types */
#define MYSQL_CLIENT_reserved1 0
#define MYSQL_CLIENT_reserved2 1
#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN 2
#define MYSQL_CLIENT_TRACE_PLUGIN 3
#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION 0x0200
#define MYSQL_CLIENT_TRACE_PLUGIN_INTERFACE_VERSION 0x0200
#define MYSQL_CLIENT_MAX_PLUGINS 4
#define MYSQL_CLIENT_PLUGIN_AUTHOR_ORACLE "Oracle Corporation"
#define mysql_declare_client_plugin(X) \
MYSQL_CLIENT_PLUGIN_EXPORT st_mysql_client_plugin_##X \
_mysql_client_plugin_declaration_ = { \
MYSQL_CLIENT_##X##_PLUGIN, \
MYSQL_CLIENT_##X##_PLUGIN_INTERFACE_VERSION,
#define mysql_end_client_plugin }
/* generic plugin header structure */
#define MYSQL_CLIENT_PLUGIN_HEADER \
int type; \
unsigned int interface_version; \
const char *name; \
const char *author; \
const char *desc; \
unsigned int version[3]; \
const char *license; \
void *mysql_api; \
int (*init)(char *, size_t, int, va_list); \
int (*deinit)(void); \
int (*options)(const char *option, const void *); \
int (*get_options)(const char *option, void *);
struct st_mysql_client_plugin {
MYSQL_CLIENT_PLUGIN_HEADER
};
struct MYSQL;
/******** authentication plugin specific declarations *********/
#include "plugin_auth_common.h"
struct auth_plugin_t {
MYSQL_CLIENT_PLUGIN_HEADER
int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct MYSQL *mysql);
enum net_async_status (*authenticate_user_nonblocking)(MYSQL_PLUGIN_VIO *vio,
struct MYSQL *mysql,
int *result);
};
// Needed for the mysql_declare_client_plugin() macro. Do not use elsewhere.
typedef struct auth_plugin_t st_mysql_client_plugin_AUTHENTICATION;
/******** using plugins ************/
/**
loads a plugin and initializes it
@param mysql MYSQL structure.
@param name a name of the plugin to load
@param type type of plugin that should be loaded, -1 to disable type check
@param argc number of arguments to pass to the plugin initialization
function
@param ... arguments for the plugin initialization function
@retval
a pointer to the loaded plugin, or NULL in case of a failure
*/
struct st_mysql_client_plugin *mysql_load_plugin(struct MYSQL *mysql,
const char *name, int type,
int argc, ...);
/**
loads a plugin and initializes it, taking va_list as an argument
This is the same as mysql_load_plugin, but take va_list instead of
a list of arguments.
@param mysql MYSQL structure.
@param name a name of the plugin to load
@param type type of plugin that should be loaded, -1 to disable type check
@param argc number of arguments to pass to the plugin initialization
function
@param args arguments for the plugin initialization function
@retval
a pointer to the loaded plugin, or NULL in case of a failure
*/
struct st_mysql_client_plugin *mysql_load_plugin_v(struct MYSQL *mysql,
const char *name, int type,
int argc, va_list args);
/**
finds an already loaded plugin by name, or loads it, if necessary
@param mysql MYSQL structure.
@param name a name of the plugin to load
@param type type of plugin that should be loaded
@retval
a pointer to the plugin, or NULL in case of a failure
*/
struct st_mysql_client_plugin *mysql_client_find_plugin(struct MYSQL *mysql,
const char *name,
int type);
/**
adds a plugin structure to the list of loaded plugins
This is useful if an application has the necessary functionality
(for example, a special load data handler) statically linked into
the application binary. It can use this function to register the plugin
directly, avoiding the need to factor it out into a shared object.
@param mysql MYSQL structure. It is only used for error reporting
@param plugin an st_mysql_client_plugin structure to register
@retval
a pointer to the plugin, or NULL in case of a failure
*/
struct st_mysql_client_plugin *mysql_client_register_plugin(
struct MYSQL *mysql, struct st_mysql_client_plugin *plugin);
/**
set plugin options
Can be used to set extra options and affect behavior for a plugin.
This function may be called multiple times to set several options
@param plugin an st_mysql_client_plugin structure
@param option a string which specifies the option to set
@param value value for the option.
@retval 0 on success, 1 in case of failure
**/
int mysql_plugin_options(struct st_mysql_client_plugin *plugin,
const char *option, const void *value);
/**
get plugin options
Can be used to get options from a plugin.
This function may be called multiple times to get several options
@param plugin an st_mysql_client_plugin structure
@param option a string which specifies the option to get
@param[out] value value for the option.
@retval 0 on success, 1 in case of failure
**/
int mysql_plugin_get_option(struct st_mysql_client_plugin *plugin,
const char *option, void *value);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,188 @@
#ifndef MYSQL_PLUGIN_AUTH_COMMON_INCLUDED
/* Copyright (c) 2010, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/**
@file include/mysql/plugin_auth_common.h
This file defines constants and data structures that are the same for
both client- and server-side authentication plugins.
*/
#define MYSQL_PLUGIN_AUTH_COMMON_INCLUDED
/** the max allowed length for a user name */
#define MYSQL_USERNAME_LENGTH 96
/**
return values of the plugin authenticate_user() method.
*/
/**
Authentication failed, plugin internal error.
An error occurred in the authentication plugin itself.
These errors are reported in table performance_schema.host_cache,
column COUNT_AUTH_PLUGIN_ERRORS.
*/
#define CR_AUTH_PLUGIN_ERROR 3
/**
Authentication failed, client server handshake.
An error occurred during the client server handshake.
These errors are reported in table performance_schema.host_cache,
column COUNT_HANDSHAKE_ERRORS.
*/
#define CR_AUTH_HANDSHAKE 2
/**
Authentication failed, user credentials.
For example, wrong passwords.
These errors are reported in table performance_schema.host_cache,
column COUNT_AUTHENTICATION_ERRORS.
*/
#define CR_AUTH_USER_CREDENTIALS 1
/**
Authentication failed. Additionally, all other CR_xxx values
(libmysql error code) can be used too.
The client plugin may set the error code and the error message directly
in the MYSQL structure and return CR_ERROR. If a CR_xxx specific error
code was returned, an error message in the MYSQL structure will be
overwritten. If CR_ERROR is returned without setting the error in MYSQL,
CR_UNKNOWN_ERROR will be user.
*/
#define CR_ERROR 0
/**
Authentication (client part) was successful. It does not mean that the
authentication as a whole was successful, usually it only means
that the client was able to send the user name and the password to the
server. If CR_OK is returned, the libmysql reads the next packet expecting
it to be one of OK, ERROR, or CHANGE_PLUGIN packets.
*/
#define CR_OK -1
/**
Authentication was successful.
It means that the client has done its part successfully and also that
a plugin has read the last packet (one of OK, ERROR, CHANGE_PLUGIN).
In this case, libmysql will not read a packet from the server,
but it will use the data at mysql->net.read_pos.
A plugin may return this value if the number of roundtrips in the
authentication protocol is not known in advance, and the client plugin
needs to read one packet more to determine if the authentication is finished
or not.
*/
#define CR_OK_HANDSHAKE_COMPLETE -2
/**
Authentication was successful with limited operations.
It means that the both client and server side plugins decided to allow
authentication with very limited operations ALTER USER to do registration.
*/
#define CR_OK_AUTH_IN_SANDBOX_MODE -3
/**
Flag to be passed back to server from authentication plugins via
authenticated_as when proxy mapping should be done by the server.
*/
#define PROXY_FLAG 0
/*
We need HANDLE definition if on Windows. Define WIN32_LEAN_AND_MEAN (if
not already done) to minimize amount of imported declarations.
*/
#if defined(_WIN32) && !defined(MYSQL_ABI_CHECK)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#endif
struct MYSQL_PLUGIN_VIO_INFO {
enum {
MYSQL_VIO_INVALID,
MYSQL_VIO_TCP,
MYSQL_VIO_SOCKET,
MYSQL_VIO_PIPE,
MYSQL_VIO_MEMORY
} protocol;
int socket; /**< it's set, if the protocol is SOCKET or TCP */
#if defined(_WIN32) && !defined(MYSQL_ABI_CHECK)
HANDLE handle; /**< it's set, if the protocol is PIPE or MEMORY */
#endif
};
/* state of an asynchronous operation */
enum net_async_status {
NET_ASYNC_COMPLETE = 0,
NET_ASYNC_NOT_READY,
NET_ASYNC_ERROR,
NET_ASYNC_COMPLETE_NO_MORE_RESULTS
};
/**
Provides plugin access to communication channel
*/
typedef struct MYSQL_PLUGIN_VIO {
/**
Plugin provides a pointer reference and this function sets it to the
contents of any incoming packet. Returns the packet length, or -1 if
the plugin should terminate.
*/
int (*read_packet)(struct MYSQL_PLUGIN_VIO *vio, unsigned char **buf);
/**
Plugin provides a buffer with data and the length and this
function sends it as a packet. Returns 0 on success, 1 on failure.
*/
int (*write_packet)(struct MYSQL_PLUGIN_VIO *vio, const unsigned char *packet,
int packet_len);
/**
Fills in a MYSQL_PLUGIN_VIO_INFO structure, providing the information
about the connection.
*/
void (*info)(struct MYSQL_PLUGIN_VIO *vio,
struct MYSQL_PLUGIN_VIO_INFO *info);
/**
Non blocking version of read_packet. This function points buf to starting
position of incoming packet. When this function returns NET_ASYNC_NOT_READY
plugin should call this function again until all incoming packets are read.
If return code is NET_ASYNC_COMPLETE, plugin can do further processing of
read packets.
*/
enum net_async_status (*read_packet_nonblocking)(struct MYSQL_PLUGIN_VIO *vio,
unsigned char **buf,
int *result);
/**
Non blocking version of write_packet. Sends data available in pkt of length
pkt_len to server in asynchronous way.
*/
enum net_async_status (*write_packet_nonblocking)(
struct MYSQL_PLUGIN_VIO *vio, const unsigned char *pkt, int pkt_len,
int *result);
} MYSQL_PLUGIN_VIO;
#endif

View File

@@ -0,0 +1,91 @@
/* Copyright (c) 2017, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef UDF_REGISTRATION_TYPES_H
#define UDF_REGISTRATION_TYPES_H
#ifndef MYSQL_ABI_CHECK
#include <stdbool.h>
#endif
/**
Type of the user defined function return slot and arguments
*/
enum Item_result {
INVALID_RESULT = -1, /** not valid for UDFs */
STRING_RESULT = 0, /** char * */
REAL_RESULT, /** double */
INT_RESULT, /** long long */
ROW_RESULT, /** not valid for UDFs */
DECIMAL_RESULT /** char *, to be converted to/from a decimal */
};
typedef struct UDF_ARGS {
unsigned int arg_count; /**< Number of arguments */
enum Item_result *arg_type; /**< Pointer to item_results */
char **args; /**< Pointer to argument */
unsigned long *lengths; /**< Length of string arguments */
char *maybe_null; /**< Set to 1 for all maybe_null args */
char **attributes; /**< Pointer to attribute name */
unsigned long *attribute_lengths; /**< Length of attribute arguments */
void *extension;
} UDF_ARGS;
/**
Information about the result of a user defined function
@todo add a notion for determinism of the UDF.
@sa Item_udf_func::update_used_tables()
*/
typedef struct UDF_INIT {
bool maybe_null; /** 1 if function can return NULL */
unsigned int decimals; /** for real functions */
unsigned long max_length; /** For string functions */
char *ptr; /** free pointer for function data */
bool const_item; /** 1 if function always returns the same value */
void *extension;
} UDF_INIT;
enum Item_udftype { UDFTYPE_FUNCTION = 1, UDFTYPE_AGGREGATE };
typedef void (*Udf_func_clear)(UDF_INIT *, unsigned char *, unsigned char *);
typedef void (*Udf_func_add)(UDF_INIT *, UDF_ARGS *, unsigned char *,
unsigned char *);
typedef void (*Udf_func_deinit)(UDF_INIT *);
typedef bool (*Udf_func_init)(UDF_INIT *, UDF_ARGS *, char *);
typedef void (*Udf_func_any)(void);
typedef double (*Udf_func_double)(UDF_INIT *, UDF_ARGS *, unsigned char *,
unsigned char *);
typedef long long (*Udf_func_longlong)(UDF_INIT *, UDF_ARGS *, unsigned char *,
unsigned char *);
typedef char *(*Udf_func_string)(UDF_INIT *, UDF_ARGS *, char *,
unsigned long *, unsigned char *,
unsigned char *);
#endif /* UDF_REGISTRATION_TYPES_H */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,91 @@
/* Copyright (c) 2004, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
Without limiting anything contained in the foregoing, this file,
which is part of C Driver for MySQL (Connector/C), is also subject to the
Universal FOSS Exception, version 1.0, a copy of which can be found at
http://oss.oracle.com/licenses/universal-foss-exception.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef _mysql_time_h_
#define _mysql_time_h_
/**
@file include/mysql_time.h
Time declarations shared between the server and client API:
you should not add anything to this header unless it's used
(and hence should be visible) in mysql.h.
If you're looking for a place to add new time-related declaration,
it's most likely my_time.h. See also "C API Handling of Date
and Time Values" chapter in documentation.
*/
// Do not not pull in the server header "my_inttypes.h" from client code.
// IWYU pragma: no_include "my_inttypes.h"
enum enum_mysql_timestamp_type {
MYSQL_TIMESTAMP_NONE = -2,
MYSQL_TIMESTAMP_ERROR = -1,
/// Stores year, month and day components.
MYSQL_TIMESTAMP_DATE = 0,
/**
Stores all date and time components.
Value is in UTC for `TIMESTAMP` type.
Value is in local time zone for `DATETIME` type.
*/
MYSQL_TIMESTAMP_DATETIME = 1,
/// Stores hour, minute, second and microsecond.
MYSQL_TIMESTAMP_TIME = 2,
/**
A temporary type for `DATETIME` or `TIMESTAMP` types equipped with time
zone information. After the time zone information is reconciled, the type is
converted to MYSQL_TIMESTAMP_DATETIME.
*/
MYSQL_TIMESTAMP_DATETIME_TZ = 3
};
/*
Structure which is used to represent datetime values inside MySQL.
We assume that values in this structure are normalized, i.e. year <= 9999,
month <= 12, day <= 31, hour <= 23, hour <= 59, hour <= 59. Many functions
in server such as my_system_gmt_sec() or make_time() family of functions
rely on this (actually now usage of make_*() family relies on a bit weaker
restriction). Also functions that produce MYSQL_TIME as result ensure this.
There is one exception to this rule though if this structure holds time
value (time_type == MYSQL_TIMESTAMP_TIME) days and hour member can hold
bigger values.
*/
typedef struct MYSQL_TIME {
unsigned int year, month, day, hour, minute, second;
unsigned long second_part; /**< microseconds */
bool neg;
enum enum_mysql_timestamp_type time_type;
/// The time zone displacement, specified in seconds.
int time_zone_displacement;
} MYSQL_TIME;
#endif /* _mysql_time_h_ */

View File

@@ -0,0 +1,32 @@
/* Copyright Abandoned 1996,1999 TCX DataKonsult AB & Monty Program KB
& Detron HB, 1996, 1999-2004, 2007 MySQL AB.
This file is public domain and comes with NO WARRANTY of any kind
*/
/* Version numbers for protocol & mysqld */
#ifndef _mysql_version_h
#define _mysql_version_h
#define PROTOCOL_VERSION 10
#define MYSQL_SERVER_VERSION "8.0.43"
#define MYSQL_BASE_VERSION "mysqld-8.0"
#define MYSQL_SERVER_SUFFIX_DEF ""
#define MYSQL_VERSION_ID 80043
#define MYSQL_VERSION_STABILITY "LTS"
#define MYSQL_PORT 3306
#define MYSQL_ADMIN_PORT 33062
#define MYSQL_PORT_DEFAULT 0
#define MYSQL_UNIX_ADDR "/tmp/mysql.sock"
#define MYSQL_CONFIG_NAME "my"
#define MYSQL_PERSIST_CONFIG_NAME "mysqld-auto"
#define MYSQL_COMPILATION_COMMENT "MySQL Community - GPL"
#define MYSQL_COMPILATION_COMMENT_SERVER "MySQL Community Server - GPL"
#define LIBMYSQL_VERSION "8.0.43"
#define LIBMYSQL_VERSION_ID 80043
#ifndef LICENSE
#define LICENSE GPL
#endif /* LICENSE */
#endif /* _mysql_version_h */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 2016, 2025, Oracle and/or its affiliates.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2.0,
* as published by the Free Software Foundation.
*
* This program is designed to work with certain software (including
* but not limited to OpenSSL) that is licensed under separate terms,
* as designated in a particular file or component or in included license
* documentation. The authors of MySQL hereby grant you an additional
* permission to link the program and your derivative works with the
* separately licensed software that they have either included with
* the program or referenced in the documentation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License, version 2.0, for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* Autogenerated file, please don't edit */
#include "mysqlx_error.h"
{"ER_X_BAD_MESSAGE", ER_X_BAD_MESSAGE, "", NULL, NULL, 0 },
{"ER_X_CAPABILITIES_PREPARE_FAILED", ER_X_CAPABILITIES_PREPARE_FAILED, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_NOT_FOUND", ER_X_CAPABILITY_NOT_FOUND, "", NULL, NULL, 0 },
{"ER_X_INVALID_PROTOCOL_DATA", ER_X_INVALID_PROTOCOL_DATA, "", NULL, NULL, 0 },
{"ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_VALUE_LENGTH", ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_VALUE_LENGTH, "", NULL, NULL, 0 },
{"ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_KEY_LENGTH", ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_KEY_LENGTH, "", NULL, NULL, 0 },
{"ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_EMPTY_KEY", ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_EMPTY_KEY, "", NULL, NULL, 0 },
{"ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_LENGTH", ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_LENGTH, "", NULL, NULL, 0 },
{"ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_TYPE", ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_TYPE, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_SET_NOT_ALLOWED", ER_X_CAPABILITY_SET_NOT_ALLOWED, "", NULL, NULL, 0 },
{"ER_X_SERVICE_ERROR", ER_X_SERVICE_ERROR, "", NULL, NULL, 0 },
{"ER_X_SESSION", ER_X_SESSION, "", NULL, NULL, 0 },
{"ER_X_INVALID_ARGUMENT", ER_X_INVALID_ARGUMENT, "", NULL, NULL, 0 },
{"ER_X_MISSING_ARGUMENT", ER_X_MISSING_ARGUMENT, "", NULL, NULL, 0 },
{"ER_X_BAD_INSERT_DATA", ER_X_BAD_INSERT_DATA, "", NULL, NULL, 0 },
{"ER_X_CMD_NUM_ARGUMENTS", ER_X_CMD_NUM_ARGUMENTS, "", NULL, NULL, 0 },
{"ER_X_CMD_ARGUMENT_TYPE", ER_X_CMD_ARGUMENT_TYPE, "", NULL, NULL, 0 },
{"ER_X_CMD_ARGUMENT_VALUE", ER_X_CMD_ARGUMENT_VALUE, "", NULL, NULL, 0 },
{"ER_X_BAD_UPSERT_DATA", ER_X_BAD_UPSERT_DATA, "", NULL, NULL, 0 },
{"ER_X_DUPLICATED_CAPABILITIES", ER_X_DUPLICATED_CAPABILITIES, "", NULL, NULL, 0 },
{"ER_X_CMD_ARGUMENT_OBJECT_EMPTY", ER_X_CMD_ARGUMENT_OBJECT_EMPTY, "", NULL, NULL, 0 },
{"ER_X_CMD_INVALID_ARGUMENT", ER_X_CMD_INVALID_ARGUMENT, "", NULL, NULL, 0 },
{"ER_X_BAD_UPDATE_DATA", ER_X_BAD_UPDATE_DATA, "", NULL, NULL, 0 },
{"ER_X_BAD_TYPE_OF_UPDATE", ER_X_BAD_TYPE_OF_UPDATE, "", NULL, NULL, 0 },
{"ER_X_BAD_COLUMN_TO_UPDATE", ER_X_BAD_COLUMN_TO_UPDATE, "", NULL, NULL, 0 },
{"ER_X_BAD_MEMBER_TO_UPDATE", ER_X_BAD_MEMBER_TO_UPDATE, "", NULL, NULL, 0 },
{"ER_X_BAD_STATEMENT_ID", ER_X_BAD_STATEMENT_ID, "", NULL, NULL, 0 },
{"ER_X_BAD_CURSOR_ID", ER_X_BAD_CURSOR_ID, "", NULL, NULL, 0 },
{"ER_X_BAD_SCHEMA", ER_X_BAD_SCHEMA, "", NULL, NULL, 0 },
{"ER_X_BAD_TABLE", ER_X_BAD_TABLE, "", NULL, NULL, 0 },
{"ER_X_BAD_PROJECTION", ER_X_BAD_PROJECTION, "", NULL, NULL, 0 },
{"ER_X_DOC_ID_MISSING", ER_X_DOC_ID_MISSING, "", NULL, NULL, 0 },
{"ER_X_DUPLICATE_ENTRY", ER_X_DUPLICATE_ENTRY, "", NULL, NULL, 0 },
{"ER_X_DOC_REQUIRED_FIELD_MISSING", ER_X_DOC_REQUIRED_FIELD_MISSING, "", NULL, NULL, 0 },
{"ER_X_PROJ_BAD_KEY_NAME", ER_X_PROJ_BAD_KEY_NAME, "", NULL, NULL, 0 },
{"ER_X_BAD_DOC_PATH", ER_X_BAD_DOC_PATH, "", NULL, NULL, 0 },
{"ER_X_CURSOR_EXISTS", ER_X_CURSOR_EXISTS, "", NULL, NULL, 0 },
{"ER_X_CURSOR_REACHED_EOF", ER_X_CURSOR_REACHED_EOF, "", NULL, NULL, 0 },
{"ER_X_PREPARED_STATMENT_CAN_HAVE_ONE_CURSOR", ER_X_PREPARED_STATMENT_CAN_HAVE_ONE_CURSOR, "", NULL, NULL, 0 },
{"ER_X_PREPARED_EXECUTE_ARGUMENT_NOT_SUPPORTED", ER_X_PREPARED_EXECUTE_ARGUMENT_NOT_SUPPORTED, "", NULL, NULL, 0 },
{"ER_X_PREPARED_EXECUTE_ARGUMENT_CONSISTENCY", ER_X_PREPARED_EXECUTE_ARGUMENT_CONSISTENCY, "", NULL, NULL, 0 },
{"ER_X_EXPR_BAD_OPERATOR", ER_X_EXPR_BAD_OPERATOR, "", NULL, NULL, 0 },
{"ER_X_EXPR_BAD_NUM_ARGS", ER_X_EXPR_BAD_NUM_ARGS, "", NULL, NULL, 0 },
{"ER_X_EXPR_MISSING_ARG", ER_X_EXPR_MISSING_ARG, "", NULL, NULL, 0 },
{"ER_X_EXPR_BAD_TYPE_VALUE", ER_X_EXPR_BAD_TYPE_VALUE, "", NULL, NULL, 0 },
{"ER_X_EXPR_BAD_VALUE", ER_X_EXPR_BAD_VALUE, "", NULL, NULL, 0 },
{"ER_X_INVALID_COLLECTION", ER_X_INVALID_COLLECTION, "", NULL, NULL, 0 },
{"ER_X_INVALID_ADMIN_COMMAND", ER_X_INVALID_ADMIN_COMMAND, "", NULL, NULL, 0 },
{"ER_X_EXPECT_NOT_OPEN", ER_X_EXPECT_NOT_OPEN, "", NULL, NULL, 0 },
{"ER_X_EXPECT_NO_ERROR_FAILED", ER_X_EXPECT_NO_ERROR_FAILED, "", NULL, NULL, 0 },
{"ER_X_EXPECT_BAD_CONDITION", ER_X_EXPECT_BAD_CONDITION, "", NULL, NULL, 0 },
{"ER_X_EXPECT_BAD_CONDITION_VALUE", ER_X_EXPECT_BAD_CONDITION_VALUE, "", NULL, NULL, 0 },
{"ER_X_INVALID_NAMESPACE", ER_X_INVALID_NAMESPACE, "", NULL, NULL, 0 },
{"ER_X_BAD_NOTICE", ER_X_BAD_NOTICE, "", NULL, NULL, 0 },
{"ER_X_CANNOT_DISABLE_NOTICE", ER_X_CANNOT_DISABLE_NOTICE, "", NULL, NULL, 0 },
{"ER_X_BAD_CONFIGURATION", ER_X_BAD_CONFIGURATION, "", NULL, NULL, 0 },
{"ER_X_MYSQLX_ACCOUNT_MISSING_PERMISSIONS", ER_X_MYSQLX_ACCOUNT_MISSING_PERMISSIONS, "", NULL, NULL, 0 },
{"ER_X_EXPECT_FIELD_EXISTS_FAILED", ER_X_EXPECT_FIELD_EXISTS_FAILED, "", NULL, NULL, 0 },
{"ER_X_BAD_LOCKING", ER_X_BAD_LOCKING, "", NULL, NULL, 0 },
{"ER_X_FRAME_COMPRESSION_DISABLED", ER_X_FRAME_COMPRESSION_DISABLED, "", NULL, NULL, 0 },
{"ER_X_DECOMPRESSION_FAILED", ER_X_DECOMPRESSION_FAILED, "", NULL, NULL, 0 },
{"ER_X_BAD_COMPRESSED_FRAME", ER_X_BAD_COMPRESSED_FRAME, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_COMPRESSION_INVALID_ALGORITHM", ER_X_CAPABILITY_COMPRESSION_INVALID_ALGORITHM, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_COMPRESSION_INVALID_SERVER_STYLE", ER_X_CAPABILITY_COMPRESSION_INVALID_SERVER_STYLE, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_COMPRESSION_INVALID_CLIENT_STYLE", ER_X_CAPABILITY_COMPRESSION_INVALID_CLIENT_STYLE, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_COMPRESSION_INVALID_OPTION", ER_X_CAPABILITY_COMPRESSION_INVALID_OPTION, "", NULL, NULL, 0 },
{"ER_X_CAPABILITY_COMPRESSION_MISSING_REQUIRED_FIELDS", ER_X_CAPABILITY_COMPRESSION_MISSING_REQUIRED_FIELDS, "", NULL, NULL, 0 },
{"ER_X_DOCUMENT_DOESNT_MATCH_EXPECTED_SCHEMA", ER_X_DOCUMENT_DOESNT_MATCH_EXPECTED_SCHEMA, "", NULL, NULL, 0 },
{"ER_X_COLLECTION_OPTION_DOESNT_EXISTS", ER_X_COLLECTION_OPTION_DOESNT_EXISTS, "", NULL, NULL, 0 },
{"ER_X_INVALID_VALIDATION_SCHEMA", ER_X_INVALID_VALIDATION_SCHEMA, "", NULL, NULL, 0 },

View File

@@ -0,0 +1,100 @@
/* Copyright (c) 2015, 2025, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2.0,
as published by the Free Software Foundation.
This program is designed to work with certain software (including
but not limited to OpenSSL) that is licensed under separate terms,
as designated in a particular file or component or in included license
documentation. The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have either included with
the program or referenced in the documentation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License, version 2.0, for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef _MYSQLX_ERROR_H_
#define _MYSQLX_ERROR_H_
#define ER_X_BAD_MESSAGE 5000
#define ER_X_CAPABILITIES_PREPARE_FAILED 5001
#define ER_X_CAPABILITY_NOT_FOUND 5002
#define ER_X_INVALID_PROTOCOL_DATA 5003
#define ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_VALUE_LENGTH 5004
#define ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_KEY_LENGTH 5005
#define ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_EMPTY_KEY 5006
#define ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_LENGTH 5007
#define ER_X_BAD_CONNECTION_SESSION_ATTRIBUTE_TYPE 5008
#define ER_X_CAPABILITY_SET_NOT_ALLOWED 5009
#define ER_X_SERVICE_ERROR 5010
#define ER_X_SESSION 5011
#define ER_X_INVALID_ARGUMENT 5012
#define ER_X_MISSING_ARGUMENT 5013
#define ER_X_BAD_INSERT_DATA 5014
#define ER_X_CMD_NUM_ARGUMENTS 5015
#define ER_X_CMD_ARGUMENT_TYPE 5016
#define ER_X_CMD_ARGUMENT_VALUE 5017
#define ER_X_BAD_UPSERT_DATA 5018
#define ER_X_DUPLICATED_CAPABILITIES 5019
#define ER_X_CMD_ARGUMENT_OBJECT_EMPTY 5020
#define ER_X_CMD_INVALID_ARGUMENT 5021
#define ER_X_BAD_UPDATE_DATA 5050
#define ER_X_BAD_TYPE_OF_UPDATE 5051
#define ER_X_BAD_COLUMN_TO_UPDATE 5052
#define ER_X_BAD_MEMBER_TO_UPDATE 5053
#define ER_X_BAD_STATEMENT_ID 5110
#define ER_X_BAD_CURSOR_ID 5111
#define ER_X_BAD_SCHEMA 5112
#define ER_X_BAD_TABLE 5113
#define ER_X_BAD_PROJECTION 5114
#define ER_X_DOC_ID_MISSING 5115
#define ER_X_DUPLICATE_ENTRY 5116
#define ER_X_DOC_REQUIRED_FIELD_MISSING 5117
#define ER_X_PROJ_BAD_KEY_NAME 5120
#define ER_X_BAD_DOC_PATH 5121
#define ER_X_CURSOR_EXISTS 5122
#define ER_X_CURSOR_REACHED_EOF 5123
#define ER_X_PREPARED_STATMENT_CAN_HAVE_ONE_CURSOR 5131
#define ER_X_PREPARED_EXECUTE_ARGUMENT_NOT_SUPPORTED 5133
#define ER_X_PREPARED_EXECUTE_ARGUMENT_CONSISTENCY 5134
#define ER_X_EXPR_BAD_OPERATOR 5150
#define ER_X_EXPR_BAD_NUM_ARGS 5151
#define ER_X_EXPR_MISSING_ARG 5152
#define ER_X_EXPR_BAD_TYPE_VALUE 5153
#define ER_X_EXPR_BAD_VALUE 5154
#define ER_X_INVALID_COLLECTION 5156
#define ER_X_INVALID_ADMIN_COMMAND 5157
#define ER_X_EXPECT_NOT_OPEN 5158
#define ER_X_EXPECT_NO_ERROR_FAILED 5159
#define ER_X_EXPECT_BAD_CONDITION 5160
#define ER_X_EXPECT_BAD_CONDITION_VALUE 5161
#define ER_X_INVALID_NAMESPACE 5162
#define ER_X_BAD_NOTICE 5163
#define ER_X_CANNOT_DISABLE_NOTICE 5164
#define ER_X_BAD_CONFIGURATION 5165
#define ER_X_MYSQLX_ACCOUNT_MISSING_PERMISSIONS 5167
#define ER_X_EXPECT_FIELD_EXISTS_FAILED 5168
#define ER_X_BAD_LOCKING 5169
#define ER_X_FRAME_COMPRESSION_DISABLED 5170
#define ER_X_DECOMPRESSION_FAILED 5171
#define ER_X_BAD_COMPRESSED_FRAME 5174
#define ER_X_CAPABILITY_COMPRESSION_INVALID_ALGORITHM 5175
#define ER_X_CAPABILITY_COMPRESSION_INVALID_SERVER_STYLE 5176
#define ER_X_CAPABILITY_COMPRESSION_INVALID_CLIENT_STYLE 5177
#define ER_X_CAPABILITY_COMPRESSION_INVALID_OPTION 5178
#define ER_X_CAPABILITY_COMPRESSION_MISSING_REQUIRED_FIELDS 5179
#define ER_X_DOCUMENT_DOESNT_MATCH_EXPECTED_SCHEMA 5180
#define ER_X_COLLECTION_OPTION_DOESNT_EXISTS 5181
#define ER_X_INVALID_VALIDATION_SCHEMA 5182
#endif // _MYSQLX_ERROR_H_

View File

@@ -0,0 +1,45 @@
/*
* Copyright (c) 2016, 2025, Oracle and/or its affiliates.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2.0,
* as published by the Free Software Foundation.
*
* This program is designed to work with certain software (including
* but not limited to OpenSSL) that is licensed under separate terms,
* as designated in a particular file or component or in included license
* documentation. The authors of MySQL hereby grant you an additional
* permission to link the program and your derivative works with the
* separately licensed software that they have either included with
* the program or referenced in the documentation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License, version 2.0, for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* Version numbers for X Plugin */
#ifndef _MYSQLX_VERSION_H_
#define _MYSQLX_VERSION_H_
#define MYSQLX_PLUGIN_VERSION_MAJOR 1
#define MYSQLX_PLUGIN_VERSION_MINOR 0
#define MYSQLX_PLUGIN_VERSION_PATCH 2
#define MYSQLX_PLUGIN_NAME "mysqlx"
#define MYSQLX_STATUS_VARIABLE_PREFIX(NAME) "Mysqlx_" NAME
#define MYSQLX_SYSTEM_VARIABLE_PREFIX(NAME) "mysqlx_" NAME
#define MYSQLX_TCP_PORT 33060U
#define MYSQLX_UNIX_ADDR "/tmp/mysqlx.sock"
#define MYSQLX_PLUGIN_VERSION ( (MYSQLX_PLUGIN_VERSION_MAJOR << 8) | MYSQLX_PLUGIN_VERSION_MINOR )
#define MYSQLX_PLUGIN_VERSION_STRING "1.0.2"
#endif // _MYSQLX_VERSION_H_

View File

@@ -0,0 +1,144 @@
/*
* Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#define APPLINK_STDIN 1
#define APPLINK_STDOUT 2
#define APPLINK_STDERR 3
#define APPLINK_FPRINTF 4
#define APPLINK_FGETS 5
#define APPLINK_FREAD 6
#define APPLINK_FWRITE 7
#define APPLINK_FSETMOD 8
#define APPLINK_FEOF 9
#define APPLINK_FCLOSE 10 /* should not be used */
#define APPLINK_FOPEN 11 /* solely for completeness */
#define APPLINK_FSEEK 12
#define APPLINK_FTELL 13
#define APPLINK_FFLUSH 14
#define APPLINK_FERROR 15
#define APPLINK_CLEARERR 16
#define APPLINK_FILENO 17 /* to be used with below */
#define APPLINK_OPEN 18 /* formally can't be used, as flags can vary */
#define APPLINK_READ 19
#define APPLINK_WRITE 20
#define APPLINK_LSEEK 21
#define APPLINK_CLOSE 22
#define APPLINK_MAX 22 /* always same as last macro */
#ifndef APPMACROS_ONLY
# include <stdio.h>
# include <io.h>
# include <fcntl.h>
# ifdef __BORLANDC__
/* _lseek in <io.h> is a function-like macro so we can't take its address */
# undef _lseek
# define _lseek lseek
# endif
static void *app_stdin(void)
{
return stdin;
}
static void *app_stdout(void)
{
return stdout;
}
static void *app_stderr(void)
{
return stderr;
}
static int app_feof(FILE *fp)
{
return feof(fp);
}
static int app_ferror(FILE *fp)
{
return ferror(fp);
}
static void app_clearerr(FILE *fp)
{
clearerr(fp);
}
static int app_fileno(FILE *fp)
{
return _fileno(fp);
}
static int app_fsetmod(FILE *fp, char mod)
{
return _setmode(_fileno(fp), mod == 'b' ? _O_BINARY : _O_TEXT);
}
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport)
void **
# if defined(__BORLANDC__)
/*
* __stdcall appears to be the only way to get the name
* decoration right with Borland C. Otherwise it works
* purely incidentally, as we pass no parameters.
*/
__stdcall
# else
__cdecl
# endif
OPENSSL_Applink(void)
{
static int once = 1;
static void *OPENSSL_ApplinkTable[APPLINK_MAX + 1] =
{ (void *)APPLINK_MAX };
if (once) {
OPENSSL_ApplinkTable[APPLINK_STDIN] = app_stdin;
OPENSSL_ApplinkTable[APPLINK_STDOUT] = app_stdout;
OPENSSL_ApplinkTable[APPLINK_STDERR] = app_stderr;
OPENSSL_ApplinkTable[APPLINK_FPRINTF] = fprintf;
OPENSSL_ApplinkTable[APPLINK_FGETS] = fgets;
OPENSSL_ApplinkTable[APPLINK_FREAD] = fread;
OPENSSL_ApplinkTable[APPLINK_FWRITE] = fwrite;
OPENSSL_ApplinkTable[APPLINK_FSETMOD] = app_fsetmod;
OPENSSL_ApplinkTable[APPLINK_FEOF] = app_feof;
OPENSSL_ApplinkTable[APPLINK_FCLOSE] = fclose;
OPENSSL_ApplinkTable[APPLINK_FOPEN] = fopen;
OPENSSL_ApplinkTable[APPLINK_FSEEK] = fseek;
OPENSSL_ApplinkTable[APPLINK_FTELL] = ftell;
OPENSSL_ApplinkTable[APPLINK_FFLUSH] = fflush;
OPENSSL_ApplinkTable[APPLINK_FERROR] = app_ferror;
OPENSSL_ApplinkTable[APPLINK_CLEARERR] = app_clearerr;
OPENSSL_ApplinkTable[APPLINK_FILENO] = app_fileno;
OPENSSL_ApplinkTable[APPLINK_OPEN] = _open;
OPENSSL_ApplinkTable[APPLINK_READ] = _read;
OPENSSL_ApplinkTable[APPLINK_WRITE] = _write;
OPENSSL_ApplinkTable[APPLINK_LSEEK] = _lseek;
OPENSSL_ApplinkTable[APPLINK_CLOSE] = _close;
once = 0;
}
return OPENSSL_ApplinkTable;
}
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,115 @@
@echo off
chcp 65001 >nul
color 0C
title 清理NPQS9100 MySQL端口占用
cls
echo ==========================================
echo 清理 NPQS9100 MySQL 端口占用
echo ==========================================
echo.
REM 获取MySQL目录脚本所在目录
set MYSQL_HOME=%~dp0
cd /d "%MYSQL_HOME%"
REM 读取实际运行的端口
set PORT_FILE=.running-port
set MYSQL_PORT=
if exist "%PORT_FILE%" (
set /p MYSQL_PORT=<"%PORT_FILE%"
echo [√] 检测到运行记录:端口 %MYSQL_PORT%
echo.
) else (
echo [!] 未找到运行记录文件,使用默认端口 3306
echo.
set MYSQL_PORT=3306
)
echo [1] 检查端口 %MYSQL_PORT% 占用情况...
echo.
REM 查找占用该端口的连接
netstat -ano | findstr ":%MYSQL_PORT%" > "%TEMP%\mysql_port.txt"
if %errorlevel% equ 0 (
echo 发现以下端口 %MYSQL_PORT% 连接:
echo ----------------------------------------
type "%TEMP%\mysql_port.txt"
echo ----------------------------------------
echo.
echo [2] 提取进程ID并结束进程...
echo.
REM 提取所有LISTENING状态的PID
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr "LISTENING"') do (
if not "%%a"=="0" (
echo 正在结束进程 PID: %%a
taskkill /F /PID %%a 2>nul
if errorlevel 1 (
echo [失败] 无法结束进程 %%a
) else (
echo [成功] 已结束进程 %%a
)
)
)
REM 如果还有其他状态的连接,也尝试结束
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr /V "LISTENING"') do (
if not "%%a"=="0" (
echo 正在结束进程 PID: %%a
taskkill /F /PID %%a 2>nul
if errorlevel 1 (
echo [已结束或无权限] 进程 %%a
) else (
echo [成功] 已结束进程 %%a
)
)
)
echo.
echo [3] 清理完成
REM 等待2秒让进程完全释放
timeout /t 2 /nobreak >nul
echo.
echo [4] 再次检查端口 %MYSQL_PORT%...
netstat -ano | findstr ":%MYSQL_PORT%"
if errorlevel 1 (
echo [√] 端口 %MYSQL_PORT% 已完全释放
REM 删除端口记录文件
if exist "%PORT_FILE%" (
del "%PORT_FILE%"
echo [√] 已清理端口记录文件
)
) else (
echo [!] 仍有连接存在可能是TIME_WAIT状态会自动释放
)
) else (
echo [√] 没有发现占用端口 %MYSQL_PORT% 的进程
REM 删除端口记录文件
if exist "%PORT_FILE%" (
del "%PORT_FILE%"
echo [√] 已清理端口记录文件
)
)
REM 清理临时文件
if exist "%TEMP%\mysql_port.txt" del "%TEMP%\mysql_port.txt"
echo.
echo ==========================================
echo 清理完成
echo ==========================================
echo.
echo 说明:
echo - 此脚本只清理 NPQS9100 应用使用的 MySQL 端口
echo - 不会影响您电脑上的其他 MySQL 服务
echo.
pause

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,29 @@
;
; Configuration file of IPADIC
;
; $Id: dicrc,v 1.4 2006/04/08 06:41:36 taku-ku Exp $;
;
cost-factor = 800
bos-feature = BOS/EOS,*,*,*,*,*,*,*,*
eval-size = 8
unk-eval-size = 4
config-charset = EUC-JP
; yomi
node-format-yomi = %pS%f[7]
unk-format-yomi = %M
eos-format-yomi = \n
; simple
node-format-simple = %m\t%F-[0,1,2,3]\n
eos-format-simple = EOS\n
; ChaSen
node-format-chasen = %m\t%f[7]\t%f[6]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\n
unk-format-chasen = %m\t%m\t%m\t%F-[0,1,2,3]\t\t\n
eos-format-chasen = EOS\n
; ChaSen (include spaces)
node-format-chasen2 = %M\t%f[7]\t%f[6]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\n
unk-format-chasen2 = %M\t%m\t%m\t%F-[0,1,2,3]\t\t\n
eos-format-chasen2 = EOS\n

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 0
<EFBFBD>ե<EFBFBD><EFBFBD>,*,*,* 1
<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>,*,*,* 2
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>٥å<EFBFBD>,*,* 3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>,*,* 5
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 6
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 8
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 9
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD>Ω,*,* 10
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 11
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,* 12
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 13
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 14
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,Ϣ<EFBFBD><EFBFBD>,* 15
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 16
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 17
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 18
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,*,* 19
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>,*,* 20
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 21
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 22
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 23
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ϣ<EFBFBD>β<EFBFBD>,*,* 24
<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>,*,*,* 25
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,* 26
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD>³,*,* 27
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 28
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 29
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 30
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,* 31
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 32
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,* 33
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 34
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 35
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 36
̾<EFBFBD><EFBFBD>,<EFBFBD>ʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD>,*,* 37
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 38
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 39
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,*,* 40
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 41
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 42
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,<EFBFBD><EFBFBD> 43
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,̾ 44
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ȿ<EFBFBD>,* 45
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 46
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,<EFBFBD><EFBFBD> 47
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>,*,* 48
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>Ū,*,* 49
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,* 50
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 51
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 52
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 53
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 54
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,* 55
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,* 56
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,* 57
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,* 58
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 59
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 60
̾<EFBFBD><EFBFBD>,ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΩŪ,*,* 61
̾<EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 62
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 63
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 64
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 65
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,* 66
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,*,* 67
Ϣ<EFBFBD>λ<EFBFBD>,*,*,* 68

View File

@@ -0,0 +1,94 @@
#
# Feature(POS) to Internal State mapping
#
[unigram rewrite]
# <EFBFBD>ɤ<EFBFBD>,ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>ʻ<EFBFBD>1,2,3,4,<EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>
*,*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,$8
# <EFBFBD>ɤߤ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,*
[left rewrite]
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ԥ<EFBFBD>|<EFBFBD>Ԥʤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|³<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD>Ԥ<EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,$7
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>̤<EFBFBD>|ȴ<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ȴ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ĺ<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ĺ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>פ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>פ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ф<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ф<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ľ<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ľ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>äݤ<EFBFBD>|<EFBFBD>ݤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ť|<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ǥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ƥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,*,*,*,(<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD>Ӥ<EFBFBD>|<EFBFBD>¤Ӥ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
[right rewrite]
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ԥ<EFBFBD>|<EFBFBD>Ԥʤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|³<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD>Ԥ<EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,$7
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>̤<EFBFBD>|ȴ<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ȴ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ĺ<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ĺ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>פ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>פ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ф<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ф<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ľ<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ľ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>äݤ<EFBFBD>|<EFBFBD>ݤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ť|<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ǥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ƥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,*,*,*,(<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD>Ӥ<EFBFBD>|<EFBFBD>¤Ӥ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
;
; Configuration file of IPADIC
;
; $Id: dicrc,v 1.4 2006/04/08 06:41:36 taku-ku Exp $;
;
cost-factor = 800
bos-feature = BOS/EOS,*,*,*,*,*,*,*,*
eval-size = 8
unk-eval-size = 4
config-charset = EUC-JP
; yomi
node-format-yomi = %pS%f[7]
unk-format-yomi = %M
eos-format-yomi = \n
; simple
node-format-simple = %m\t%F-[0,1,2,3]\n
eos-format-simple = EOS\n
; ChaSen
node-format-chasen = %m\t%f[7]\t%f[6]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\n
unk-format-chasen = %m\t%m\t%m\t%F-[0,1,2,3]\t\t\n
eos-format-chasen = EOS\n
; ChaSen (include spaces)
node-format-chasen2 = %M\t%f[7]\t%f[6]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\n
unk-format-chasen2 = %M\t%m\t%m\t%F-[0,1,2,3]\t\t\n
eos-format-chasen2 = EOS\n

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 0
<EFBFBD>ե<EFBFBD><EFBFBD>,*,*,* 1
<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>,*,*,* 2
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>٥å<EFBFBD>,*,* 3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>,*,* 5
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 6
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 8
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 9
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD>Ω,*,* 10
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 11
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,* 12
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 13
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 14
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>,Ϣ<EFBFBD><EFBFBD>,* 15
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 16
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 17
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 18
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,*,* 19
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>,*,* 20
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 21
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 22
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 23
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ϣ<EFBFBD>β<EFBFBD>,*,* 24
<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>,*,*,* 25
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,* 26
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD>³,*,* 27
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 28
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 29
<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>,̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 30
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,* 31
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 32
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,* 33
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 34
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 35
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,*,* 36
̾<EFBFBD><EFBFBD>,<EFBFBD>ʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD>,*,* 37
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 38
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,* 39
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,*,* 40
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 41
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 42
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,<EFBFBD><EFBFBD> 43
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,̾ 44
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ȿ<EFBFBD>,* 45
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 46
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͭ̾<EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,<EFBFBD><EFBFBD> 47
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>,*,* 48
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>Ū,*,* 49
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³,* 50
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 51
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 52
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 53
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 54
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾,* 55
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ϰ<EFBFBD>,* 56
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,* 57
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,* 58
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 59
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 60
̾<EFBFBD><EFBFBD>,ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΩŪ,*,* 61
̾<EFBFBD><EFBFBD>,<EFBFBD>ü<EFBFBD>,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 62
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,* 63
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 64
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>,* 65
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,* 66
̾<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ,*,* 67
Ϣ<EFBFBD>λ<EFBFBD>,*,*,* 68

View File

@@ -0,0 +1,94 @@
#
# Feature(POS) to Internal State mapping
#
[unigram rewrite]
# <EFBFBD>ɤ<EFBFBD>,ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>ʻ<EFBFBD>1,2,3,4,<EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>
*,*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,$8
# <EFBFBD>ɤߤ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,*
[left rewrite]
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ԥ<EFBFBD>|<EFBFBD>Ԥʤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|³<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD>Ԥ<EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,$7
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>̤<EFBFBD>|ȴ<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ȴ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ĺ<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ĺ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>פ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>פ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ф<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ф<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ľ<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ľ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>äݤ<EFBFBD>|<EFBFBD>ݤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ť|<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ǥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ƥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,*,*,*,(<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD>Ӥ<EFBFBD>|<EFBFBD>¤Ӥ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
[right rewrite]
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD>ͤ<EFBFBD>|<EFBFBD>ͥ<EFBFBD>|<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ԥ<EFBFBD>|<EFBFBD>Ԥʤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,<EFBFBD><EFBFBD><EFBFBD><EFBFBD> $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|³<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD>Ԥ<EFBFBD>|<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,$7
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>̤<EFBFBD>|ȴ<EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ȴ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ĺ<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ĺ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>פ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>פ<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ф<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ф<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ԥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(ľ<EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,ľ<EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>
ư<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,*,*,*,*,*,(<EFBFBD>ʤ<EFBFBD>|̵<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,̵<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,(<EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>äݤ<EFBFBD>|<EFBFBD>ݤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ť|<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>|<EFBFBD>Ǥ<EFBFBD>|<EFBFBD>ɤ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ǥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,(<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>|<EFBFBD>Ƥ<EFBFBD>|<EFBFBD>Ȥ<EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD>Ƥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ω,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
<EFBFBD><EFBFBD>³<EFBFBD><EFBFBD>,*,*,*,*,*,(<EFBFBD>ڤ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>ʤ<EFBFBD><EFBFBD>Ӥ<EFBFBD>|<EFBFBD>¤Ӥ<EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) $1,$2,$3,$4,$5,$6,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*

Some files were not shown because too many files have changed in this diff Show More