diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1ebf22c..4be2186 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+# v3.0.0
+## 04/11/2019
+
+1. [](#new)
+ * Added new `template:` to choose twig template option for email form processing
+ * Moved `buildMessage()` and `parseAddressValue()` to Email object and made public
+ * Refactored the `EmailUtils::sendEmail()` to take an array of params or the old param list
+ * Switched to SwiftMailer v.6.1.3 (requires PHP7/Grav 1.6)
+ * SwiftMailer 6.x compatibility fixes
+ * Updated various translations
+ * Added support for Email Queue with Scheduler support
+ * Code cleanup, composer update
+ * Added a new `clear-queue-failures` CLI command to flush out failed sends
+1. [](#improved)
+ * Added backlink for scheduler task
+ * Added support for `environment` option to `flushqueue` CLI command
+ * Fixed mailtrap hostname in README.md
+ * Disable autocomplete on SMTP `user` and `password` fields
+
# v2.7.2
## 01/25/2019
@@ -8,7 +27,7 @@
* Updated RU language [#100](https://github.com/getgrav/grav-plugin-email/pull/100)
* Updated to SwiftMailer v5.4.12
1. [](#bugfix)
- * Fixed `mailtrap` hostname
+ * Fixed `mailtrap` hostname
# v2.7.1
## 12/05/2017
@@ -19,7 +38,7 @@
* Added examples of setting up Email plugin with various SMTP providers
* Updated RU language [#60](https://github.com/getgrav/grav-plugin-email/pull/60)
* Updated to SwiftMailer v5.4.8
-
+
# v2.7.0
## 10/26/2017
diff --git a/README.md b/README.md
index e9f3213..1214be3 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,11 @@ from:
from_name:
to:
to_name:
+queue:
+ enabled: true
+ flush_frequency: '* * * * *'
+ flush_msg_limit: 10
+ flush_time_limit: 100
mailer:
engine: sendmail
smtp:
@@ -179,6 +184,18 @@ Solid SMTP options that even provide a FREE tier for low email volumes include:
If you are still unsure why should be using one in the first place, check out this article: https://zapier.com/learn/email-marketing/best-transactional-email-sending-services/
+## Email Queue
+
+For performance reasons, it's often desirable to queue emails and send them in batches, rather than forcing Grav to wait while an email is sent. This is because email servers are sometimes slow and you might not want to wait for the whole email-sending process before continuing with Grav processing.
+
+To address this, you can enable the **Email Queue** and this will ensure all email's in Grav are actually sent to the queue, and not sent directly. In order for the emails to be actually sent, you need to flush the queue. By default this is handled by the **Grav Scheduler**, so you need to ensure you have that enabled and setup correctly or **your emails will not be sent!!!**.
+
+You can also manually flush the queue by using the provided CLI command:
+
+```
+$ bin/plugin email flush-queue
+```
+
## Testing with CLI Command
You can test your email configuration with the following CLI Command:
diff --git a/blueprints.yaml b/blueprints.yaml
index c12e408..b3b8084 100644
--- a/blueprints.yaml
+++ b/blueprints.yaml
@@ -1,5 +1,6 @@
name: Email
-version: 2.7.2
+version: 3.0.0
+testing: false
description: Enables the emailing system for Grav
icon: envelope
author:
@@ -12,7 +13,7 @@ bugs: https://github.com/getgrav/grav-plugin-email/issues
license: MIT
dependencies:
- - { name: grav, version: '>=1.1.9' }
+ - { name: grav, version: '>=1.6.0' }
form:
validation: loose
@@ -52,6 +53,11 @@ form:
label: PLUGIN_EMAIL.CHARSET
placeholder: "Defaults to UTF-8"
+ email_Defaults:
+ type: section
+ title: PLUGIN_EMAIL.EMAIL_DEFAULTS
+ underline: true
+
from:
type: email
size: medium
@@ -128,6 +134,11 @@ form:
label: PLUGIN_EMAIL.EMAIL_BODY
placeholder: PLUGIN_EMAIL.EMAIL_BODY_PLACEHOLDER
+ smtp_config:
+ type: section
+ title: PLUGIN_EMAIL.SMTP_CONFIGURATION
+ underline: true
+
mailer.smtp.server:
type: text
size: medium
@@ -156,26 +167,76 @@ form:
mailer.smtp.user:
type: text
size: medium
+ autocomplete: nope
label: PLUGIN_EMAIL.SMTP_LOGIN_NAME
mailer.smtp.password:
type: password
size: medium
+ autocomplete: nope
label: PLUGIN_EMAIL.SMTP_PASSWORD
+ sendmail_config:
+ type: section
+ title: Sendmail Configuration
+ underline: true
+
mailer.sendmail.bin:
type: text
size: medium
label: PLUGIN_EMAIL.PATH_TO_SENDMAIL
placeholder: "/usr/sbin/sendmail"
+ queue_section:
+ type: section
+ title: PLUGIN_EMAIL.QUEUE_TITLE
+ text: PLUGIN_EMAIL.QUEUE_DESC
+ markdown: true
+ underline: true
+
+ queue.enabled:
+ type: toggle
+ label: PLUGIN_EMAIL.QUEUE_ENABLED
+ highlight: 0
+ default: 0
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+
+ queue.flush_frequency:
+ type: cron
+ label: PLUGIN_EMAIL.QUEUE_FLUSH_FREQUENCY
+ size: medium
+ help: PLUGIN_EMAIL.QUEUE_FLUSH_FREQUENCY_HELP
+ default: '* * * * *'
+ placeholder: '* * * * *'
+
+ queue.flush_msg_limit:
+ type: number
+ label: PLUGIN_EMAIL.QUEUE_FLUSH_MSG_LIMIT
+ size: x-small
+ append: Messages
+
+ queue.flush_time_limit:
+ type: number
+ label: PLUGIN_EMAIL.QUEUE_FLUSH_TIME_LIMIT
+ size: x-small
+ append: Seconds
+
+ advanced_section:
+ type: section
+ title: PLUGIN_EMAIL.ADVANCED
+ underline: true
+
debug:
type: toggle
label: PLUGIN_EMAIL.DEBUG
highlight: 1
default: 0
options:
- true: PLUGIN_ADMIN.ENABLED
- false: PLUGIN_ADMIN.DISABLED
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
diff --git a/classes/Email.php b/classes/Email.php
index 1af8b33..9ecc53c 100644
--- a/classes/Email.php
+++ b/classes/Email.php
@@ -3,6 +3,9 @@
use Grav\Common\Config\Config;
use Grav\Common\Grav;
+use Grav\Common\Language\Language;
+use Grav\Common\Twig\Twig;
+use Grav\Framework\Form\Interfaces\FormInterface;
use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
@@ -18,14 +21,16 @@ class Email
*/
protected $logger;
+ protected $queue_path;
+
/**
* Returns true if emails have been enabled in the system.
*
* @return bool
*/
- public function enabled()
+ public static function enabled()
{
- return Grav::instance()['config']->get('plugins.email.mailer.engine') != 'none';
+ return Grav::instance()['config']->get('plugins.email.mailer.engine') !== 'none';
}
/**
@@ -33,7 +38,7 @@ public function enabled()
*
* @return bool
*/
- public function debug()
+ public static function debug()
{
return Grav::instance()['config']->get('plugins.email.debug') == 'true';
}
@@ -118,6 +123,218 @@ public function send($message)
return $result;
}
+ /**
+ * Build e-mail message.
+ *
+ * @param array $params
+ * @param array $vars
+ * @return \Swift_Message
+ */
+ public function buildMessage(array $params, array $vars = [])
+ {
+ /** @var Twig $twig */
+ $twig = Grav::instance()['twig'];
+
+ /** @var Config $config */
+ $config = Grav::instance()['config'];
+
+ /** @var Language $language */
+ $language = Grav::instance()['language'];
+
+ // Extend parameters with defaults.
+ $params += [
+ 'bcc' => $config->get('plugins.email.bcc', []),
+ 'body' => $config->get('plugins.email.body', '{% include "forms/data.html.twig" %}'),
+ 'cc' => $config->get('plugins.email.cc', []),
+ 'cc_name' => $config->get('plugins.email.cc_name'),
+ 'charset' => $config->get('plugins.email.charset', 'utf-8'),
+ 'from' => $config->get('plugins.email.from'),
+ 'from_name' => $config->get('plugins.email.from_name'),
+ 'content_type' => $config->get('plugins.email.content_type', 'text/html'),
+ 'reply_to' => $config->get('plugins.email.reply_to', []),
+ 'reply_to_name' => $config->get('plugins.email.reply_to_name'),
+ 'subject' => !empty($vars['form']) && $vars['form'] instanceof FormInterface ? $vars['form']->page()->title() : null,
+ 'to' => $config->get('plugins.email.to'),
+ 'to_name' => $config->get('plugins.email.to_name'),
+ 'process_markdown' => false,
+ 'template' => false
+ ];
+
+ // Create message object.
+ $message = $this->message();
+
+ if (!$params['to']) {
+ throw new \RuntimeException($language->translate('PLUGIN_EMAIL.PLEASE_CONFIGURE_A_TO_ADDRESS'));
+ }
+ if (!$params['from']) {
+ throw new \RuntimeException($language->translate('PLUGIN_EMAIL.PLEASE_CONFIGURE_A_FROM_ADDRESS'));
+ }
+
+ // Process parameters.
+ foreach ($params as $key => $value) {
+ switch ($key) {
+ case 'body':
+ if (is_string($value)) {
+ $body = $twig->processString($value, $vars);
+
+ if ($params['process_markdown']) {
+ $parsedown = new \Parsedown();
+ $body = $parsedown->text($body);
+ }
+
+ if ($params['template']) {
+ $body = $twig->processTemplate($params['template'], ['content' => $body]);
+ }
+
+ $content_type = !empty($params['content_type']) ? $twig->processString($params['content_type'], $vars) : null;
+ $charset = !empty($params['charset']) ? $twig->processString($params['charset'], $vars) : null;
+
+ $message->setBody($body, $content_type, $charset);
+ }
+ elseif (is_array($value)) {
+ foreach ($value as $body_part) {
+ $body_part += [
+ 'charset' => $params['charset'],
+ 'content_type' => $params['content_type'],
+ ];
+
+ $body = !empty($body_part['body']) ? $twig->processString($body_part['body'], $vars) : null;
+
+ if ($params['process_markdown']) {
+ $parsedown = new \Parsedown();
+ $body = $parsedown->text($body);
+ }
+
+ $content_type = !empty($body_part['content_type']) ? $twig->processString($body_part['content_type'], $vars) : null;
+ $charset = !empty($body_part['charset']) ? $twig->processString($body_part['charset'], $vars) : null;
+
+ if (!$message->getBody()) {
+ $message->setBody($body, $content_type, $charset);
+ }
+ else {
+ $message->addPart($body, $content_type, $charset);
+ }
+ }
+ }
+ break;
+
+ case 'subject':
+ $message->setSubject($twig->processString($language->translate($value), $vars));
+ break;
+
+ case 'to':
+ if (is_string($value) && !empty($params['to_name'])) {
+ $value = [
+ 'mail' => $twig->processString($value, $vars),
+ 'name' => $twig->processString($params['to_name'], $vars),
+ ];
+ }
+
+ foreach ($this->parseAddressValue($value, $vars) as $address) {
+ $message->addTo($address->mail, $address->name);
+ }
+ break;
+
+ case 'cc':
+ if (is_string($value) && !empty($params['cc_name'])) {
+ $value = [
+ 'mail' => $twig->processString($value, $vars),
+ 'name' => $twig->processString($params['cc_name'], $vars),
+ ];
+ }
+
+ foreach ($this->parseAddressValue($value, $vars) as $address) {
+ $message->addCc($address->mail, $address->name);
+ }
+ break;
+
+ case 'bcc':
+ foreach ($this->parseAddressValue($value, $vars) as $address) {
+ $message->addBcc($address->mail, $address->name);
+ }
+ break;
+
+ case 'from':
+ if (is_string($value) && !empty($params['from_name'])) {
+ $value = [
+ 'mail' => $twig->processString($value, $vars),
+ 'name' => $twig->processString($params['from_name'], $vars),
+ ];
+ }
+
+ foreach ($this->parseAddressValue($value, $vars) as $address) {
+ $message->addFrom($address->mail, $address->name);
+ }
+ break;
+
+ case 'reply_to':
+ if (is_string($value) && !empty($params['reply_to_name'])) {
+ $value = [
+ 'mail' => $twig->processString($value, $vars),
+ 'name' => $twig->processString($params['reply_to_name'], $vars),
+ ];
+ }
+
+ foreach ($this->parseAddressValue($value, $vars) as $address) {
+ $message->addReplyTo($address->mail, $address->name);
+ }
+ break;
+
+ }
+ }
+
+ return $message;
+ }
+
+ /**
+ * Return parsed e-mail address value.
+ *
+ * @param string|string[] $value
+ * @param array $vars
+ * @return array
+ */
+ public function parseAddressValue($value, array $vars = [])
+ {
+ $parsed = [];
+
+ /** @var Twig $twig */
+ $twig = Grav::instance()['twig'];
+
+ // Single e-mail address string
+ if (is_string($value)) {
+ $parsed[] = (object) [
+ 'mail' => $twig->processString($value, $vars),
+ 'name' => null,
+ ];
+ }
+
+ else {
+ // Cast value as array
+ $value = (array) $value;
+
+ // Single e-mail address array
+ if (!empty($value['mail'])) {
+ $parsed[] = (object) [
+ 'mail' => $twig->processString($value['mail'], $vars),
+ 'name' => !empty($value['name']) ? $twig->processString($value['name'], $vars) : NULL,
+ ];
+ }
+
+ // Multiple addresses (either as strings or arrays)
+ elseif (!(empty($value['mail']) && !empty($value['name']))) {
+ foreach ($value as $y => $itemx) {
+ $addresses = $this->parseAddressValue($itemx, $vars);
+
+ if (($address = reset($addresses))) {
+ $parsed[] = $address;
+ }
+ }
+ }
+ }
+
+ return $parsed;
+ }
+
/**
* Return debugging logs if enabled
*
@@ -144,40 +361,12 @@ protected function getMailer()
if (!$this->mailer) {
/** @var Config $config */
$config = Grav::instance()['config'];
- $mailer = $config->get('plugins.email.mailer.engine');
+ $queue_enabled = $config->get('plugins.email.queue.enabled');
- // Create the Transport and initialize it.
- switch ($mailer) {
- case 'smtp':
- $transport = \Swift_SmtpTransport::newInstance();
-
- $options = $config->get('plugins.email.mailer.smtp');
- if (!empty($options['server'])) {
- $transport->setHost($options['server']);
- }
- if (!empty($options['port'])) {
- $transport->setPort($options['port']);
- }
- if (!empty($options['encryption']) && $options['encryption'] != 'none') {
- $transport->setEncryption($options['encryption']);
- }
- if (!empty($options['user'])) {
- $transport->setUsername($options['user']);
- }
- if (!empty($options['password'])) {
- $transport->setPassword($options['password']);
- }
- break;
- case 'sendmail':
- default:
- $options = $config->get('plugins.email.mailer.sendmail');
- $bin = !empty($options['bin']) ? $options['bin'] : '/usr/sbin/sendmail';
- $transport = \Swift_SendmailTransport::newInstance($bin);
- break;
- }
+ $transport = $queue_enabled === true ? $this->getQueue() : $this->getTransport();
// Create the Mailer using your created Transport
- $this->mailer = \Swift_Mailer::newInstance($transport);
+ $this->mailer = new \Swift_Mailer($transport);
// Register the logger if we're debugging.
if ($this->debug()) {
@@ -188,4 +377,167 @@ protected function getMailer()
return $this->mailer;
}
+
+ protected static function getQueuePath()
+ {
+ $queue_path = Grav::instance()['locator']->findResource('user://data', true) . '/email-queue';
+
+ if (!file_exists($queue_path)) {
+ mkdir($queue_path);
+ }
+
+ return $queue_path;
+ }
+
+ protected static function getQueue()
+ {
+ $queue_path = static::getQueuePath();
+
+ $spool = new \Swift_FileSpool($queue_path);
+ $transport = new \Swift_SpoolTransport($spool);
+
+ return $transport;
+ }
+
+ public static function flushQueue()
+ {
+ $grav = Grav::instance();
+
+ $grav['debugger']->enabled(false);
+
+ $config = $grav['config']->get('plugins.email.queue');
+
+ $queue = static::getQueue();
+ $spool = $queue->getSpool();
+ $spool->setMessageLimit($config['flush_msg_limit']);
+ $spool->setTimeLimit($config['flush_time_limit']);
+
+ try {
+ $failures = [];
+ $result = $spool->flushQueue(static::getTransport(), $failures);
+ return $result . ' messages flushed from queue...';
+ } catch (\Exception $e) {
+ $grav['log']->error($e->getMessage());
+ return $e->getMessage();
+ }
+
+ }
+
+ public static function clearQueueFailures()
+ {
+ $grav = Grav::instance();
+ $grav['debugger']->enabled(false);
+
+ $preferences = \Swift_Preferences::getInstance();
+ $preferences->setTempDir(sys_get_temp_dir());
+
+ /** @var \Swift_Transport $transport */
+ $transport = static::getTransport();
+ if (!$transport->isStarted()) {
+ $transport->start();
+ }
+
+ $queue_path = static::getQueuePath();
+
+ foreach (new \GlobIterator($queue_path . '/*.sending') as $file) {
+ $final_message = $file->getPathname();
+
+ /** @var \Swift_Message $message */
+ $message = unserialize(file_get_contents($final_message));
+
+ echo(sprintf(
+ 'Retrying "%s" to "%s"',
+ $message->getSubject(),
+ implode(', ', array_keys($message->getTo()))
+ ) . "\n");
+
+ try {
+ $clean = static::cloneMessage($message);
+ $transport->send($clean);
+ echo("sent!\n");
+
+ // DOn't want to trip up any errors from sending too fast
+ sleep(1);
+ } catch (\Swift_TransportException $e) {
+ echo("ERROR: Send failed - deleting spooled message\n");
+ }
+
+ // Remove the file
+ unlink($final_message);
+ }
+ }
+
+ /**
+ * Clean copy a message
+ *
+ * @param \Swift_Message $message
+ */
+ public static function cloneMessage($message)
+ {
+ $clean = new \Swift_Message();
+
+ $clean->setBoundary($message->getBoundary());
+ $clean->setBcc($message->getBcc());
+ $clean->setBody($message->getBody());
+ $clean->setCharset($message->getCharset());
+ $clean->setChildren($message->getChildren());
+ $clean->setContentType($message->getContentType());
+ $clean->setCc($message->getCc());
+ $clean->setDate($message->getDate());
+ $clean->setDescription($message->getDescription());
+ $clean->setEncoder($message->getEncoder());
+ $clean->setFormat($message->getFormat());
+ $clean->setFrom($message->getFrom());
+ $clean->setId($message->getId());
+ $clean->setMaxLineLength($message->getMaxLineLength());
+ $clean->setPriority($message->getPriority());
+ $clean->setReplyTo($message->getReplyTo());
+ $clean->setReturnPath($message->getReturnPath());
+ $clean->setSender($message->getSender());
+ $clean->setSubject($message->getSubject());
+ $clean->setTo($message->getTo());
+
+ return $clean;
+
+ }
+
+ protected static function getTransport()
+ {
+ /** @var Config $config */
+ $config = Grav::instance()['config'];
+
+ $engine = $config->get('plugins.email.mailer.engine');
+
+ // Create the Transport and initialize it.
+ switch ($engine) {
+ case 'smtp':
+ $transport = new \Swift_SmtpTransport();
+
+ $options = $config->get('plugins.email.mailer.smtp');
+ if (!empty($options['server'])) {
+ $transport->setHost($options['server']);
+ }
+ if (!empty($options['port'])) {
+ $transport->setPort($options['port']);
+ }
+ if (!empty($options['encryption']) && $options['encryption'] !== 'none') {
+ $transport->setEncryption($options['encryption']);
+ }
+ if (!empty($options['user'])) {
+ $transport->setUsername($options['user']);
+ }
+ if (!empty($options['password'])) {
+ $transport->setPassword($options['password']);
+ }
+ break;
+ case 'sendmail':
+ default:
+ $options = $config->get('plugins.email.mailer.sendmail');
+ $bin = !empty($options['bin']) ? $options['bin'] : '/usr/sbin/sendmail';
+ $transport = new \Swift_SendmailTransport($bin);
+ break;
+ }
+
+ return $transport;
+ }
}
diff --git a/classes/Utils.php b/classes/Utils.php
index dbb573d..69b85b4 100644
--- a/classes/Utils.php
+++ b/classes/Utils.php
@@ -3,6 +3,8 @@
namespace Grav\Plugin\Email;
use Grav\Common\Grav;
+use Grav\Common\Twig\Twig;
+use Grav\Common\Utils as GravUtils;
/**
* Class Utils
@@ -13,49 +15,34 @@ class Utils
/**
* Quick utility method to send an HTML email.
*
- * @param $subject
- * @param string $content
- * @param string $to
- * @param null $from
- * @param string $mimetype
+ * @param array This test email has been sent based on the following configuration:Testing Email
%1$s
- *
- *
- *
- * @param string $name of Header
- * @param Swift_Mime_Grammar $grammar
+ * @param string $name of Header
*/
- public function __construct($name, Swift_Mime_Grammar $grammar)
+ public function __construct($name)
{
$this->setFieldName($name);
- parent::__construct($grammar);
}
/**
@@ -57,49 +48,46 @@ public function getFieldType()
/**
* Set the model for the field body.
*
- * This method takes a UNIX timestamp.
- *
- * @param int $model
+ * @param DateTimeInterface $model
*/
public function setFieldBodyModel($model)
{
- $this->setTimestamp($model);
+ $this->setDateTime($model);
}
/**
* Get the model for the field body.
*
- * This method returns a UNIX timestamp.
- *
- * @return mixed
+ * @return DateTimeImmutable
*/
public function getFieldBodyModel()
{
- return $this->getTimestamp();
+ return $this->getDateTime();
}
/**
- * Get the UNIX timestamp of the Date in this Header.
+ * Get the date-time representing the Date in this Header.
*
- * @return int
+ * @return DateTimeImmutable
*/
- public function getTimestamp()
+ public function getDateTime()
{
- return $this->_timestamp;
+ return $this->dateTime;
}
/**
- * Set the UNIX timestamp of the Date in this Header.
+ * Set the date-time of the Date in this Header.
*
- * @param int $timestamp
+ * If a DateTime instance is provided, it is converted to DateTimeImmutable.
*/
- public function setTimestamp($timestamp)
+ public function setDateTime(DateTimeInterface $dateTime)
{
- if (null !== $timestamp) {
- $timestamp = (int) $timestamp;
+ $this->clearCachedValueIf($this->getCachedValue() != $dateTime->format(DateTime::RFC2822));
+ if ($dateTime instanceof DateTime) {
+ $immutable = new DateTimeImmutable('@'.$dateTime->getTimestamp());
+ $dateTime = $immutable->setTimezone($dateTime->getTimezone());
}
- $this->clearCachedValueIf($this->_timestamp != $timestamp);
- $this->_timestamp = $timestamp;
+ $this->dateTime = $dateTime;
}
/**
@@ -115,8 +103,8 @@ public function setTimestamp($timestamp)
public function getFieldBody()
{
if (!$this->getCachedValue()) {
- if (isset($this->_timestamp)) {
- $this->setCachedValue(date('r', $this->_timestamp));
+ if (isset($this->dateTime)) {
+ $this->setCachedValue($this->dateTime->format(DateTime::RFC2822));
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php
index b114506..cadc63f 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php
@@ -8,6 +8,9 @@
* file that was distributed with this source code.
*/
+use Egulias\EmailValidator\EmailValidator;
+use Egulias\EmailValidator\Validation\RFCValidation;
+
/**
* An ID MIME Header for something like Message-ID or Content-ID.
*
@@ -22,18 +25,27 @@ class Swift_Mime_Headers_IdentificationHeader extends Swift_Mime_Headers_Abstrac
*
* @var string[]
*/
- private $_ids = array();
+ private $ids = [];
+
+ /**
+ * The strict EmailValidator.
+ *
+ * @var EmailValidator
+ */
+ private $emailValidator;
+
+ private $addressEncoder;
/**
* Creates a new IdentificationHeader with the given $name and $id.
*
- * @param string $name
- * @param Swift_Mime_Grammar $grammar
+ * @param string $name
*/
- public function __construct($name, Swift_Mime_Grammar $grammar)
+ public function __construct($name, EmailValidator $emailValidator, Swift_AddressEncoder $addressEncoder = null)
{
$this->setFieldName($name);
- parent::__construct($grammar);
+ $this->emailValidator = $emailValidator;
+ $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
}
/**
@@ -84,7 +96,7 @@ public function getFieldBodyModel()
*/
public function setId($id)
{
- $this->setIds(is_array($id) ? $id : array($id));
+ $this->setIds(is_array($id) ? $id : [$id]);
}
/**
@@ -96,8 +108,8 @@ public function setId($id)
*/
public function getId()
{
- if (count($this->_ids) > 0) {
- return $this->_ids[0];
+ if (count($this->ids) > 0) {
+ return $this->ids[0];
}
}
@@ -110,15 +122,15 @@ public function getId()
*/
public function setIds(array $ids)
{
- $actualIds = array();
+ $actualIds = [];
foreach ($ids as $id) {
- $this->_assertValidId($id);
+ $this->assertValidId($id);
$actualIds[] = $id;
}
- $this->clearCachedValueIf($this->_ids != $actualIds);
- $this->_ids = $actualIds;
+ $this->clearCachedValueIf($this->ids != $actualIds);
+ $this->ids = $actualIds;
}
/**
@@ -128,7 +140,7 @@ public function setIds(array $ids)
*/
public function getIds()
{
- return $this->_ids;
+ return $this->ids;
}
/**
@@ -146,10 +158,10 @@ public function getIds()
public function getFieldBody()
{
if (!$this->getCachedValue()) {
- $angleAddrs = array();
+ $angleAddrs = [];
- foreach ($this->_ids as $id) {
- $angleAddrs[] = '<'.$id.'>';
+ foreach ($this->ids as $id) {
+ $angleAddrs[] = '<'.$this->addressEncoder->encodeString($id).'>';
}
$this->setCachedValue(implode(' ', $angleAddrs));
@@ -165,16 +177,10 @@ public function getFieldBody()
*
* @throws Swift_RfcComplianceException
*/
- private function _assertValidId($id)
+ private function assertValidId($id)
{
- if (!preg_match(
- '/^'.$this->getGrammar()->getDefinition('id-left').'@'.
- $this->getGrammar()->getDefinition('id-right').'$/D',
- $id
- )) {
- throw new Swift_RfcComplianceException(
- 'Invalid ID given <'.$id.'>'
- );
+ if (!$this->emailValidator->isValid($id, new RFCValidation())) {
+ throw new Swift_RfcComplianceException('Invalid ID given <'.$id.'>');
}
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
index e4567fc..9f1fe17 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
@@ -8,6 +8,9 @@
* file that was distributed with this source code.
*/
+use Egulias\EmailValidator\EmailValidator;
+use Egulias\EmailValidator\Validation\RFCValidation;
+
/**
* A Mailbox Address MIME Header for something like From or Sender.
*
@@ -20,20 +23,28 @@ class Swift_Mime_Headers_MailboxHeader extends Swift_Mime_Headers_AbstractHeader
*
* @var string[]
*/
- private $_mailboxes = array();
+ private $mailboxes = [];
+
+ /**
+ * The strict EmailValidator.
+ *
+ * @var EmailValidator
+ */
+ private $emailValidator;
+
+ private $addressEncoder;
/**
* Creates a new MailboxHeader with $name.
*
- * @param string $name of Header
- * @param Swift_Mime_HeaderEncoder $encoder
- * @param Swift_Mime_Grammar $grammar
+ * @param string $name of Header
*/
- public function __construct($name, Swift_Mime_HeaderEncoder $encoder, Swift_Mime_Grammar $grammar)
+ public function __construct($name, Swift_Mime_HeaderEncoder $encoder, EmailValidator $emailValidator, Swift_AddressEncoder $addressEncoder = null)
{
$this->setFieldName($name);
$this->setEncoder($encoder);
- parent::__construct($grammar);
+ $this->emailValidator = $emailValidator;
+ $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
}
/**
@@ -103,7 +114,7 @@ public function getFieldBodyModel()
*/
public function setNameAddresses($mailboxes)
{
- $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes);
+ $this->mailboxes = $this->normalizeMailboxes((array) $mailboxes);
$this->setCachedValue(null); //Clear any cached value
}
@@ -134,7 +145,7 @@ public function setNameAddresses($mailboxes)
*/
public function getNameAddressStrings()
{
- return $this->_createNameAddressStrings($this->getNameAddresses());
+ return $this->createNameAddressStrings($this->getNameAddresses());
}
/**
@@ -163,7 +174,7 @@ public function getNameAddressStrings()
*/
public function getNameAddresses()
{
- return $this->_mailboxes;
+ return $this->mailboxes;
}
/**
@@ -200,7 +211,7 @@ public function setAddresses($addresses)
*/
public function getAddresses()
{
- return array_keys($this->_mailboxes);
+ return array_keys($this->mailboxes);
}
/**
@@ -212,7 +223,7 @@ public function removeAddresses($addresses)
{
$this->setCachedValue(null);
foreach ((array) $addresses as $address) {
- unset($this->_mailboxes[$address]);
+ unset($this->mailboxes[$address]);
}
}
@@ -232,7 +243,7 @@ public function getFieldBody()
{
// Compute the string value of the header only if needed
if (null === $this->getCachedValue()) {
- $this->setCachedValue($this->createMailboxListString($this->_mailboxes));
+ $this->setCachedValue($this->createMailboxListString($this->mailboxes));
}
return $this->getCachedValue();
@@ -247,7 +258,7 @@ public function getFieldBody()
*/
protected function normalizeMailboxes(array $mailboxes)
{
- $actualMailboxes = array();
+ $actualMailboxes = [];
foreach ($mailboxes as $key => $value) {
if (is_string($key)) {
@@ -258,7 +269,7 @@ protected function normalizeMailboxes(array $mailboxes)
$address = $value;
$name = null;
}
- $this->_assertValidAddress($address);
+ $this->assertValidAddress($address);
$actualMailboxes[$address] = $name;
}
@@ -289,7 +300,7 @@ protected function createDisplayNameString($displayName, $shorten = false)
*/
protected function createMailboxListString(array $mailboxes)
{
- return implode(', ', $this->_createNameAddressStrings($mailboxes));
+ return implode(', ', $this->createNameAddressStrings($mailboxes));
}
/**
@@ -315,12 +326,12 @@ protected function tokenNeedsEncoding($token)
*
* @return string[]
*/
- private function _createNameAddressStrings(array $mailboxes)
+ private function createNameAddressStrings(array $mailboxes)
{
- $strings = array();
+ $strings = [];
foreach ($mailboxes as $email => $name) {
- $mailboxStr = $email;
+ $mailboxStr = $this->addressEncoder->encodeString($email);
if (null !== $name) {
$nameStr = $this->createDisplayNameString($name, empty($strings));
$mailboxStr = $nameStr.' <'.$mailboxStr.'>';
@@ -338,14 +349,12 @@ private function _createNameAddressStrings(array $mailboxes)
*
* @throws Swift_RfcComplianceException If invalid.
*/
- private function _assertValidAddress($address)
+ private function assertValidAddress($address)
{
- if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
- $address)) {
+ if (!$this->emailValidator->isValid($address, new RFCValidation())) {
throw new Swift_RfcComplianceException(
- 'Address in mailbox given ['.$address.
- '] does not comply with RFC 2822, 3.6.2.'
- );
+ 'Address in mailbox given ['.$address.'] does not comply with RFC 2822, 3.6.2.'
+ );
}
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php
index d749550..fafb5ba 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php
@@ -12,6 +12,8 @@
* An OpenDKIM Specific Header using only raw header datas without encoding.
*
* @author De Cock Xavier
- * $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
+ * $transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
* ->setAuthMode('XOAUTH2')
* ->setUsername('YOUR_EMAIL_ADDRESS')
* ->setPassword('YOUR_ACCESS_TOKEN');
@@ -36,25 +36,19 @@ public function getAuthKeyword()
}
/**
- * Try to authenticate the user with $email and $token.
- *
- * @param Swift_Transport_SmtpAgent $agent
- * @param string $email
- * @param string $token
- *
- * @return bool
+ * {@inheritdoc}
*/
public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token)
{
try {
$param = $this->constructXOAuth2Params($email, $token);
- $agent->executeCommand('AUTH XOAUTH2 '.$param."\r\n", array(235));
+ $agent->executeCommand('AUTH XOAUTH2 '.$param."\r\n", [235]);
return true;
} catch (Swift_TransportException $e) {
- $agent->executeCommand("RSET\r\n", array(250));
+ $agent->executeCommand("RSET\r\n", [250]);
- return false;
+ throw $e;
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php
index cb36133..3733420 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php
@@ -9,7 +9,7 @@
*/
/**
- * An ESMTP handler for AUTH support.
+ * An ESMTP handler for AUTH support (RFC 5248).
*
* @author Chris Corbyn
*/
@@ -20,35 +20,35 @@ class Swift_Transport_Esmtp_AuthHandler implements Swift_Transport_EsmtpHandler
*
* @var Swift_Transport_Esmtp_Authenticator[]
*/
- private $_authenticators = array();
+ private $authenticators = [];
/**
* The username for authentication.
*
* @var string
*/
- private $_username;
+ private $username;
/**
* The password for authentication.
*
* @var string
*/
- private $_password;
+ private $password;
/**
* The auth mode for authentication.
*
* @var string
*/
- private $_auth_mode;
+ private $auth_mode;
/**
* The ESMTP AUTH parameters available.
*
* @var string[]
*/
- private $_esmtpParams = array();
+ private $esmtpParams = [];
/**
* Create a new AuthHandler with $authenticators for support.
@@ -67,7 +67,7 @@ public function __construct(array $authenticators)
*/
public function setAuthenticators(array $authenticators)
{
- $this->_authenticators = $authenticators;
+ $this->authenticators = $authenticators;
}
/**
@@ -77,7 +77,7 @@ public function setAuthenticators(array $authenticators)
*/
public function getAuthenticators()
{
- return $this->_authenticators;
+ return $this->authenticators;
}
/**
@@ -87,7 +87,7 @@ public function getAuthenticators()
*/
public function setUsername($username)
{
- $this->_username = $username;
+ $this->username = $username;
}
/**
@@ -97,7 +97,7 @@ public function setUsername($username)
*/
public function getUsername()
{
- return $this->_username;
+ return $this->username;
}
/**
@@ -107,7 +107,7 @@ public function getUsername()
*/
public function setPassword($password)
{
- $this->_password = $password;
+ $this->password = $password;
}
/**
@@ -117,7 +117,7 @@ public function setPassword($password)
*/
public function getPassword()
{
- return $this->_password;
+ return $this->password;
}
/**
@@ -127,7 +127,7 @@ public function getPassword()
*/
public function setAuthMode($mode)
{
- $this->_auth_mode = $mode;
+ $this->auth_mode = $mode;
}
/**
@@ -137,13 +137,13 @@ public function setAuthMode($mode)
*/
public function getAuthMode()
{
- return $this->_auth_mode;
+ return $this->auth_mode;
}
/**
* Get the name of the ESMTP extension this handles.
*
- * @return bool
+ * @return string
*/
public function getHandledKeyword()
{
@@ -157,7 +157,7 @@ public function getHandledKeyword()
*/
public function setKeywordParams(array $parameters)
{
- $this->_esmtpParams = $parameters;
+ $this->esmtpParams = $parameters;
}
/**
@@ -167,21 +167,28 @@ public function setKeywordParams(array $parameters)
*/
public function afterEhlo(Swift_Transport_SmtpAgent $agent)
{
- if ($this->_username) {
+ if ($this->username) {
$count = 0;
- foreach ($this->_getAuthenticatorsForAgent() as $authenticator) {
- if (in_array(strtolower($authenticator->getAuthKeyword()),
- array_map('strtolower', $this->_esmtpParams))) {
+ $errors = [];
+ foreach ($this->getAuthenticatorsForAgent() as $authenticator) {
+ if (in_array(strtolower($authenticator->getAuthKeyword()), array_map('strtolower', $this->esmtpParams))) {
++$count;
- if ($authenticator->authenticate($agent, $this->_username, $this->_password)) {
- return;
+ try {
+ if ($authenticator->authenticate($agent, $this->username, $this->password)) {
+ return;
+ }
+ } catch (Swift_TransportException $e) {
+ // keep the error message, but tries the other authenticators
+ $errors[] = [$authenticator->getAuthKeyword(), $e->getMessage()];
}
}
}
- throw new Swift_TransportException(
- 'Failed to authenticate on SMTP server with username "'.
- $this->_username.'" using '.$count.' possible authenticators'
- );
+
+ $message = 'Failed to authenticate on SMTP server with username "'.$this->username.'" using '.$count.' possible authenticators.';
+ foreach ($errors as $error) {
+ $message .= ' Authenticator '.$error[0].' returned '.$error[1].'.';
+ }
+ throw new Swift_TransportException($message);
}
}
@@ -190,7 +197,7 @@ public function afterEhlo(Swift_Transport_SmtpAgent $agent)
*/
public function getMailParams()
{
- return array();
+ return [];
}
/**
@@ -198,13 +205,13 @@ public function getMailParams()
*/
public function getRcptParams()
{
- return array();
+ return [];
}
/**
* Not used.
*/
- public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false)
+ public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false)
{
}
@@ -229,7 +236,7 @@ public function getPriorityOver($esmtpKeyword)
*/
public function exposeMixinMethods()
{
- return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode');
+ return ['setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'];
}
/**
@@ -242,19 +249,17 @@ public function resetState()
/**
* Returns the authenticator list for the given agent.
*
- * @param Swift_Transport_SmtpAgent $agent
- *
* @return array
*/
- protected function _getAuthenticatorsForAgent()
+ protected function getAuthenticatorsForAgent()
{
- if (!$mode = strtolower($this->_auth_mode)) {
- return $this->_authenticators;
+ if (!$mode = strtolower($this->auth_mode)) {
+ return $this->authenticators;
}
- foreach ($this->_authenticators as $authenticator) {
+ foreach ($this->authenticators as $authenticator) {
if (strtolower($authenticator->getAuthKeyword()) == $mode) {
- return array($authenticator);
+ return [$authenticator];
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php
index 12a9abf..cadfdc6 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php
@@ -29,7 +29,9 @@ public function getAuthKeyword();
* @param string $username
* @param string $password
*
- * @return bool
+ * @return bool true if authentication worked (returning false is deprecated, throw a Swift_TransportException instead)
+ *
+ * @throws Swift_TransportException Allows the message to bubble up when authentication was not successful
*/
public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password);
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/EightBitMimeHandler.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/EightBitMimeHandler.php
new file mode 100644
index 0000000..63f7086
--- /dev/null
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/EightBitMimeHandler.php
@@ -0,0 +1,113 @@
+encoding = $encoding;
+ }
+
+ /**
+ * Get the name of the ESMTP extension this handles.
+ *
+ * @return string
+ */
+ public function getHandledKeyword()
+ {
+ return '8BITMIME';
+ }
+
+ /**
+ * Not used.
+ */
+ public function setKeywordParams(array $parameters)
+ {
+ }
+
+ /**
+ * Not used.
+ */
+ public function afterEhlo(Swift_Transport_SmtpAgent $agent)
+ {
+ }
+
+ /**
+ * Get params which are appended to MAIL FROM:<>.
+ *
+ * @return string[]
+ */
+ public function getMailParams()
+ {
+ return ['BODY='.$this->encoding];
+ }
+
+ /**
+ * Not used.
+ */
+ public function getRcptParams()
+ {
+ return [];
+ }
+
+ /**
+ * Not used.
+ */
+ public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false)
+ {
+ }
+
+ /**
+ * Returns +1, -1 or 0 according to the rules for usort().
+ *
+ * This method is called to ensure extensions can be execute in an appropriate order.
+ *
+ * @param string $esmtpKeyword to compare with
+ *
+ * @return int
+ */
+ public function getPriorityOver($esmtpKeyword)
+ {
+ return 0;
+ }
+
+ /**
+ * Not used.
+ */
+ public function exposeMixinMethods()
+ {
+ return [];
+ }
+
+ /**
+ * Not used.
+ */
+ public function resetState()
+ {
+ }
+}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php
new file mode 100644
index 0000000..7d0252a
--- /dev/null
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php
@@ -0,0 +1,107 @@
+.
+ *
+ * @return string[]
+ */
+ public function getMailParams()
+ {
+ return ['SMTPUTF8'];
+ }
+
+ /**
+ * Not used.
+ */
+ public function getRcptParams()
+ {
+ return [];
+ }
+
+ /**
+ * Not used.
+ */
+ public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false)
+ {
+ }
+
+ /**
+ * Returns +1, -1 or 0 according to the rules for usort().
+ *
+ * This method is called to ensure extensions can be execute in an appropriate order.
+ *
+ * @param string $esmtpKeyword to compare with
+ *
+ * @return int
+ */
+ public function getPriorityOver($esmtpKeyword)
+ {
+ return 0;
+ }
+
+ /**
+ * Not used.
+ */
+ public function exposeMixinMethods()
+ {
+ return [];
+ }
+
+ /**
+ * Not used.
+ */
+ public function resetState()
+ {
+ }
+}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php
index c17ef8f..b8ea36e 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php
@@ -18,7 +18,7 @@ interface Swift_Transport_EsmtpHandler
/**
* Get the name of the ESMTP extension this handles.
*
- * @return bool
+ * @return string
*/
public function getHandledKeyword();
@@ -59,7 +59,7 @@ public function getRcptParams();
* @param string[] $failedRecipients to collect failures
* @param bool $stop to be set true by-reference if the command is now sent
*/
- public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false);
+ public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false);
/**
* Returns +1, -1 or 0 according to the rules for usort().
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php
index 156e2cf..d1f1c2c 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php
@@ -20,21 +20,21 @@ class Swift_Transport_EsmtpTransport extends Swift_Transport_AbstractSmtpTranspo
*
* @var Swift_Transport_EsmtpHandler[]
*/
- private $_handlers = array();
+ private $handlers = [];
/**
* ESMTP capabilities.
*
* @var string[]
*/
- private $_capabilities = array();
+ private $capabilities = [];
/**
* Connection buffer parameters.
*
* @var array
*/
- private $_params = array(
+ private $params = [
'protocol' => 'tcp',
'host' => 'localhost',
'port' => 25,
@@ -42,32 +42,33 @@ class Swift_Transport_EsmtpTransport extends Swift_Transport_AbstractSmtpTranspo
'blocking' => 1,
'tls' => false,
'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
- 'stream_context_options' => array(),
- );
+ 'stream_context_options' => [],
+ ];
/**
* Creates a new EsmtpTransport using the given I/O buffer.
*
- * @param Swift_Transport_IoBuffer $buf
* @param Swift_Transport_EsmtpHandler[] $extensionHandlers
- * @param Swift_Events_EventDispatcher $dispatcher
+ * @param string $localDomain
*/
- public function __construct(Swift_Transport_IoBuffer $buf, array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher)
+ public function __construct(Swift_Transport_IoBuffer $buf, array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher, $localDomain = '127.0.0.1', Swift_AddressEncoder $addressEncoder = null)
{
- parent::__construct($buf, $dispatcher);
+ parent::__construct($buf, $dispatcher, $localDomain, $addressEncoder);
$this->setExtensionHandlers($extensionHandlers);
}
/**
* Set the host to connect to.
*
+ * Literal IPv6 addresses should be wrapped in square brackets.
+ *
* @param string $host
*
* @return $this
*/
public function setHost($host)
{
- $this->_params['host'] = $host;
+ $this->params['host'] = $host;
return $this;
}
@@ -79,7 +80,7 @@ public function setHost($host)
*/
public function getHost()
{
- return $this->_params['host'];
+ return $this->params['host'];
}
/**
@@ -91,7 +92,7 @@ public function getHost()
*/
public function setPort($port)
{
- $this->_params['port'] = (int) $port;
+ $this->params['port'] = (int) $port;
return $this;
}
@@ -103,7 +104,7 @@ public function setPort($port)
*/
public function getPort()
{
- return $this->_params['port'];
+ return $this->params['port'];
}
/**
@@ -115,8 +116,8 @@ public function getPort()
*/
public function setTimeout($timeout)
{
- $this->_params['timeout'] = (int) $timeout;
- $this->_buffer->setParam('timeout', (int) $timeout);
+ $this->params['timeout'] = (int) $timeout;
+ $this->buffer->setParam('timeout', (int) $timeout);
return $this;
}
@@ -128,7 +129,7 @@ public function setTimeout($timeout)
*/
public function getTimeout()
{
- return $this->_params['timeout'];
+ return $this->params['timeout'];
}
/**
@@ -142,11 +143,11 @@ public function setEncryption($encryption)
{
$encryption = strtolower($encryption);
if ('tls' == $encryption) {
- $this->_params['protocol'] = 'tcp';
- $this->_params['tls'] = true;
+ $this->params['protocol'] = 'tcp';
+ $this->params['tls'] = true;
} else {
- $this->_params['protocol'] = $encryption;
- $this->_params['tls'] = false;
+ $this->params['protocol'] = $encryption;
+ $this->params['tls'] = false;
}
return $this;
@@ -159,7 +160,7 @@ public function setEncryption($encryption)
*/
public function getEncryption()
{
- return $this->_params['tls'] ? 'tls' : $this->_params['protocol'];
+ return $this->params['tls'] ? 'tls' : $this->params['protocol'];
}
/**
@@ -171,7 +172,7 @@ public function getEncryption()
*/
public function setStreamOptions($options)
{
- $this->_params['stream_context_options'] = $options;
+ $this->params['stream_context_options'] = $options;
return $this;
}
@@ -183,19 +184,21 @@ public function setStreamOptions($options)
*/
public function getStreamOptions()
{
- return $this->_params['stream_context_options'];
+ return $this->params['stream_context_options'];
}
/**
* Sets the source IP.
*
+ * IPv6 addresses should be wrapped in square brackets.
+ *
* @param string $source
*
* @return $this
*/
public function setSourceIp($source)
{
- $this->_params['sourceIp'] = $source;
+ $this->params['sourceIp'] = $source;
return $this;
}
@@ -207,7 +210,36 @@ public function setSourceIp($source)
*/
public function getSourceIp()
{
- return isset($this->_params['sourceIp']) ? $this->_params['sourceIp'] : null;
+ return $this->params['sourceIp'] ?? null;
+ }
+
+ /**
+ * Sets whether SMTP pipelining is enabled.
+ *
+ * By default, support is auto-detected using the PIPELINING SMTP extension.
+ * Use this function to override that in the unlikely event of compatibility
+ * issues.
+ *
+ * @param bool $enabled
+ *
+ * @return $this
+ */
+ public function setPipelining($enabled)
+ {
+ $this->pipelining = $enabled;
+
+ return $this;
+ }
+
+ /**
+ * Returns whether SMTP pipelining is enabled.
+ *
+ * @return bool|null a boolean if pipelining is explicitly enabled or disabled,
+ * or null if support is auto-detected.
+ */
+ public function getPipelining()
+ {
+ return $this->pipelining;
}
/**
@@ -219,14 +251,15 @@ public function getSourceIp()
*/
public function setExtensionHandlers(array $handlers)
{
- $assoc = array();
+ $assoc = [];
foreach ($handlers as $handler) {
$assoc[$handler->getHandledKeyword()] = $handler;
}
-
- @uasort($assoc, array($this, '_sortHandlers'));
- $this->_handlers = $assoc;
- $this->_setHandlerParams();
+ uasort($assoc, function ($a, $b) {
+ return $a->getPriorityOver($b->getHandledKeyword());
+ });
+ $this->handlers = $assoc;
+ $this->setHandlerParams();
return $this;
}
@@ -238,7 +271,7 @@ public function setExtensionHandlers(array $handlers)
*/
public function getExtensionHandlers()
{
- return array_values($this->_handlers);
+ return array_values($this->handlers);
}
/**
@@ -250,15 +283,17 @@ public function getExtensionHandlers()
* @param string $command
* @param int[] $codes
* @param string[] $failures An array of failures by-reference
+ * @param bool $pipeline Do not wait for response
+ * @param string $address The address, if command is RCPT TO.
*
- * @return string
+ * @return string|null The server response, or null if pipelining is enabled
*/
- public function executeCommand($command, $codes = array(), &$failures = null)
+ public function executeCommand($command, $codes = [], &$failures = null, $pipeline = false, $address = null)
{
$failures = (array) $failures;
$stopSignal = false;
$response = null;
- foreach ($this->_getActiveHandlers() as $handler) {
+ foreach ($this->getActiveHandlers() as $handler) {
$response = $handler->onCommand(
$this, $command, $codes, $failures, $stopSignal
);
@@ -267,19 +302,19 @@ public function executeCommand($command, $codes = array(), &$failures = null)
}
}
- return parent::executeCommand($command, $codes, $failures);
+ return parent::executeCommand($command, $codes, $failures, $pipeline, $address);
}
/** Mixin handling method for ESMTP handlers */
public function __call($method, $args)
{
- foreach ($this->_handlers as $handler) {
+ foreach ($this->handlers as $handler) {
if (in_array(strtolower($method),
array_map('strtolower', (array) $handler->exposeMixinMethods())
)) {
- $return = call_user_func_array(array($handler, $method), $args);
+ $return = call_user_func_array([$handler, $method], $args);
// Allow fluid method calls
- if (null === $return && substr($method, 0, 3) == 'set') {
+ if (null === $return && 'set' == substr($method, 0, 3)) {
return $this;
} else {
return $return;
@@ -290,81 +325,87 @@ public function __call($method, $args)
}
/** Get the params to initialize the buffer */
- protected function _getBufferParams()
+ protected function getBufferParams()
{
- return $this->_params;
+ return $this->params;
}
/** Overridden to perform EHLO instead */
- protected function _doHeloCommand()
+ protected function doHeloCommand()
{
try {
$response = $this->executeCommand(
- sprintf("EHLO %s\r\n", $this->_domain), array(250)
+ sprintf("EHLO %s\r\n", $this->domain), [250]
);
} catch (Swift_TransportException $e) {
- return parent::_doHeloCommand();
+ return parent::doHeloCommand();
}
- if ($this->_params['tls']) {
+ if ($this->params['tls']) {
try {
- $this->executeCommand("STARTTLS\r\n", array(220));
+ $this->executeCommand("STARTTLS\r\n", [220]);
- if (!$this->_buffer->startTLS()) {
+ if (!$this->buffer->startTLS()) {
throw new Swift_TransportException('Unable to connect with TLS encryption');
}
try {
$response = $this->executeCommand(
- sprintf("EHLO %s\r\n", $this->_domain), array(250)
+ sprintf("EHLO %s\r\n", $this->domain), [250]
);
} catch (Swift_TransportException $e) {
- return parent::_doHeloCommand();
+ return parent::doHeloCommand();
}
} catch (Swift_TransportException $e) {
- $this->_throwException($e);
+ $this->throwException($e);
}
}
- $this->_capabilities = $this->_getCapabilities($response);
- $this->_setHandlerParams();
- foreach ($this->_getActiveHandlers() as $handler) {
+ $this->capabilities = $this->getCapabilities($response);
+ if (!isset($this->pipelining)) {
+ $this->pipelining = isset($this->capabilities['PIPELINING']);
+ }
+
+ $this->setHandlerParams();
+ foreach ($this->getActiveHandlers() as $handler) {
$handler->afterEhlo($this);
}
}
/** Overridden to add Extension support */
- protected function _doMailFromCommand($address)
+ protected function doMailFromCommand($address)
{
- $handlers = $this->_getActiveHandlers();
- $params = array();
+ $address = $this->addressEncoder->encodeString($address);
+ $handlers = $this->getActiveHandlers();
+ $params = [];
foreach ($handlers as $handler) {
$params = array_merge($params, (array) $handler->getMailParams());
}
$paramStr = !empty($params) ? ' '.implode(' ', $params) : '';
$this->executeCommand(
- sprintf("MAIL FROM:<%s>%s\r\n", $address, $paramStr), array(250)
+ sprintf("MAIL FROM:<%s>%s\r\n", $address, $paramStr), [250], $failures, true
);
}
/** Overridden to add Extension support */
- protected function _doRcptToCommand($address)
+ protected function doRcptToCommand($address)
{
- $handlers = $this->_getActiveHandlers();
- $params = array();
+ $address = $this->addressEncoder->encodeString($address);
+ $handlers = $this->getActiveHandlers();
+ $params = [];
foreach ($handlers as $handler) {
$params = array_merge($params, (array) $handler->getRcptParams());
}
$paramStr = !empty($params) ? ' '.implode(' ', $params) : '';
$this->executeCommand(
- sprintf("RCPT TO:<%s>%s\r\n", $address, $paramStr), array(250, 251, 252)
+ sprintf("RCPT TO:<%s>%s\r\n", $address, $paramStr), [250, 251, 252], $failures, true, $address
);
}
/** Determine ESMTP capabilities by function group */
- private function _getCapabilities($ehloResponse)
+ private function getCapabilities($ehloResponse)
{
- $capabilities = array();
+ $capabilities = [];
$ehloResponse = trim($ehloResponse);
$lines = explode("\r\n", $ehloResponse);
array_shift($lines);
@@ -372,7 +413,7 @@ private function _getCapabilities($ehloResponse)
if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) {
$keyword = strtoupper($matches[1]);
$paramStr = strtoupper(ltrim($matches[2], ' ='));
- $params = !empty($paramStr) ? explode(' ', $paramStr) : array();
+ $params = !empty($paramStr) ? explode(' ', $paramStr) : [];
$capabilities[$keyword] = $params;
}
}
@@ -381,31 +422,25 @@ private function _getCapabilities($ehloResponse)
}
/** Set parameters which are used by each extension handler */
- private function _setHandlerParams()
+ private function setHandlerParams()
{
- foreach ($this->_handlers as $keyword => $handler) {
- if (array_key_exists($keyword, $this->_capabilities)) {
- $handler->setKeywordParams($this->_capabilities[$keyword]);
+ foreach ($this->handlers as $keyword => $handler) {
+ if (array_key_exists($keyword, $this->capabilities)) {
+ $handler->setKeywordParams($this->capabilities[$keyword]);
}
}
}
/** Get ESMTP handlers which are currently ok to use */
- private function _getActiveHandlers()
+ private function getActiveHandlers()
{
- $handlers = array();
- foreach ($this->_handlers as $keyword => $handler) {
- if (array_key_exists($keyword, $this->_capabilities)) {
+ $handlers = [];
+ foreach ($this->handlers as $keyword => $handler) {
+ if (array_key_exists($keyword, $this->capabilities)) {
$handlers[] = $handler;
}
}
return $handlers;
}
-
- /** Custom sort for extension handler ordering */
- private function _sortHandlers($a, $b)
- {
- return $a->getPriorityOver($b->getHandledKeyword());
- }
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php
index 311a0f2..21bce4b 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php
@@ -20,7 +20,7 @@ class Swift_Transport_FailoverTransport extends Swift_Transport_LoadBalancedTran
*
* @var Swift_Transport
*/
- private $_currentTransport;
+ private $currentTransport;
// needed as __construct is called from elsewhere explicitly
public function __construct()
@@ -28,41 +28,58 @@ public function __construct()
parent::__construct();
}
+ /**
+ * {@inheritdoc}
+ */
+ public function ping()
+ {
+ $maxTransports = count($this->transports);
+ for ($i = 0; $i < $maxTransports
+ && $transport = $this->getNextTransport(); ++$i) {
+ if ($transport->ping()) {
+ return true;
+ } else {
+ $this->killCurrentTransport();
+ }
+ }
+
+ return count($this->transports) > 0;
+ }
+
/**
* Send the given Message.
*
* Recipient/sender data will be retrieved from the Message API.
* The return value is the number of recipients who were accepted for delivery.
*
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
+ * @param string[] $failedRecipients An array of failures by-reference
*
* @return int
*/
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
+ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
- $maxTransports = count($this->_transports);
+ $maxTransports = count($this->transports);
$sent = 0;
- $this->_lastUsedTransport = null;
+ $this->lastUsedTransport = null;
for ($i = 0; $i < $maxTransports
- && $transport = $this->_getNextTransport(); ++$i) {
+ && $transport = $this->getNextTransport(); ++$i) {
try {
if (!$transport->isStarted()) {
$transport->start();
}
if ($sent = $transport->send($message, $failedRecipients)) {
- $this->_lastUsedTransport = $transport;
+ $this->lastUsedTransport = $transport;
return $sent;
}
} catch (Swift_TransportException $e) {
- $this->_killCurrentTransport();
+ $this->killCurrentTransport();
}
}
- if (count($this->_transports) == 0) {
+ if (0 == count($this->transports)) {
throw new Swift_TransportException(
'All Transports in FailoverTransport failed, or no Transports available'
);
@@ -71,18 +88,18 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
return $sent;
}
- protected function _getNextTransport()
+ protected function getNextTransport()
{
- if (!isset($this->_currentTransport)) {
- $this->_currentTransport = parent::_getNextTransport();
+ if (!isset($this->currentTransport)) {
+ $this->currentTransport = parent::getNextTransport();
}
- return $this->_currentTransport;
+ return $this->currentTransport;
}
- protected function _killCurrentTransport()
+ protected function killCurrentTransport()
{
- $this->_currentTransport = null;
- parent::_killCurrentTransport();
+ $this->currentTransport = null;
+ parent::killCurrentTransport();
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php
index e2adc56..a12ce8d 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php
@@ -20,21 +20,21 @@ class Swift_Transport_LoadBalancedTransport implements Swift_Transport
*
* @var Swift_Transport[]
*/
- private $_deadTransports = array();
+ private $deadTransports = [];
/**
* The Transports which are used in rotation.
*
* @var Swift_Transport[]
*/
- protected $_transports = array();
+ protected $transports = [];
/**
* The Transport used in the last successful send operation.
*
* @var Swift_Transport
*/
- protected $_lastUsedTransport = null;
+ protected $lastUsedTransport = null;
// needed as __construct is called from elsewhere explicitly
public function __construct()
@@ -48,8 +48,8 @@ public function __construct()
*/
public function setTransports(array $transports)
{
- $this->_transports = $transports;
- $this->_deadTransports = array();
+ $this->transports = $transports;
+ $this->deadTransports = [];
}
/**
@@ -59,7 +59,7 @@ public function setTransports(array $transports)
*/
public function getTransports()
{
- return array_merge($this->_transports, $this->_deadTransports);
+ return array_merge($this->transports, $this->deadTransports);
}
/**
@@ -69,7 +69,7 @@ public function getTransports()
*/
public function getLastUsedTransport()
{
- return $this->_lastUsedTransport;
+ return $this->lastUsedTransport;
}
/**
@@ -79,7 +79,7 @@ public function getLastUsedTransport()
*/
public function isStarted()
{
- return count($this->_transports) > 0;
+ return count($this->transports) > 0;
}
/**
@@ -87,7 +87,7 @@ public function isStarted()
*/
public function start()
{
- $this->_transports = array_merge($this->_transports, $this->_deadTransports);
+ $this->transports = array_merge($this->transports, $this->deadTransports);
}
/**
@@ -95,44 +95,57 @@ public function start()
*/
public function stop()
{
- foreach ($this->_transports as $transport) {
+ foreach ($this->transports as $transport) {
$transport->stop();
}
}
+ /**
+ * {@inheritdoc}
+ */
+ public function ping()
+ {
+ foreach ($this->transports as $transport) {
+ if (!$transport->ping()) {
+ $this->killCurrentTransport();
+ }
+ }
+
+ return count($this->transports) > 0;
+ }
+
/**
* Send the given Message.
*
* Recipient/sender data will be retrieved from the Message API.
* The return value is the number of recipients who were accepted for delivery.
*
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
+ * @param string[] $failedRecipients An array of failures by-reference
*
* @return int
*/
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
+ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
- $maxTransports = count($this->_transports);
+ $maxTransports = count($this->transports);
$sent = 0;
- $this->_lastUsedTransport = null;
+ $this->lastUsedTransport = null;
for ($i = 0; $i < $maxTransports
- && $transport = $this->_getNextTransport(); ++$i) {
+ && $transport = $this->getNextTransport(); ++$i) {
try {
if (!$transport->isStarted()) {
$transport->start();
}
if ($sent = $transport->send($message, $failedRecipients)) {
- $this->_lastUsedTransport = $transport;
+ $this->lastUsedTransport = $transport;
break;
}
} catch (Swift_TransportException $e) {
- $this->_killCurrentTransport();
+ $this->killCurrentTransport();
}
}
- if (count($this->_transports) == 0) {
+ if (0 == count($this->transports)) {
throw new Swift_TransportException(
'All Transports in LoadBalancedTransport failed, or no Transports available'
);
@@ -143,12 +156,10 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
/**
* Register a plugin.
- *
- * @param Swift_Events_EventListener $plugin
*/
public function registerPlugin(Swift_Events_EventListener $plugin)
{
- foreach ($this->_transports as $transport) {
+ foreach ($this->transports as $transport) {
$transport->registerPlugin($plugin);
}
}
@@ -158,10 +169,10 @@ public function registerPlugin(Swift_Events_EventListener $plugin)
*
* @return Swift_Transport
*/
- protected function _getNextTransport()
+ protected function getNextTransport()
{
- if ($next = array_shift($this->_transports)) {
- $this->_transports[] = $next;
+ if ($next = array_shift($this->transports)) {
+ $this->transports[] = $next;
}
return $next;
@@ -170,14 +181,14 @@ protected function _getNextTransport()
/**
* Tag the currently used (top of stack) transport as dead/useless.
*/
- protected function _killCurrentTransport()
+ protected function killCurrentTransport()
{
- if ($transport = array_pop($this->_transports)) {
+ if ($transport = array_pop($this->transports)) {
try {
$transport->stop();
} catch (Exception $e) {
}
- $this->_deadTransports[] = $transport;
+ $this->deadTransports[] = $transport;
}
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php
deleted file mode 100644
index 77489ce..0000000
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php
+++ /dev/null
@@ -1,32 +0,0 @@
-_invoker = $invoker;
- $this->_eventDispatcher = $eventDispatcher;
- }
-
- /**
- * Not used.
- */
- public function isStarted()
- {
- return false;
- }
-
- /**
- * Not used.
- */
- public function start()
- {
- }
-
- /**
- * Not used.
- */
- public function stop()
- {
- }
-
- /**
- * Set the additional parameters used on the mail() function.
- *
- * This string is formatted for sprintf() where %s is the sender address.
- *
- * @param string $params
- *
- * @return $this
- */
- public function setExtraParams($params)
- {
- $this->_extraParams = $params;
-
- return $this;
- }
-
- /**
- * Get the additional parameters used on the mail() function.
- *
- * This string is formatted for sprintf() where %s is the sender address.
- *
- * @return string
- */
- public function getExtraParams()
- {
- return $this->_extraParams;
- }
-
- /**
- * Send the given Message.
- *
- * Recipient/sender data will be retrieved from the Message API.
- * The return value is the number of recipients who were accepted for delivery.
- *
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
- *
- * @return int
- */
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
- {
- $failedRecipients = (array) $failedRecipients;
-
- if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) {
- $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
- if ($evt->bubbleCancelled()) {
- return 0;
- }
- }
-
- $count = (
- count((array) $message->getTo())
- + count((array) $message->getCc())
- + count((array) $message->getBcc())
- );
-
- $toHeader = $message->getHeaders()->get('To');
- $subjectHeader = $message->getHeaders()->get('Subject');
-
- if (0 === $count) {
- $this->_throwException(new Swift_TransportException('Cannot send message without a recipient'));
- }
- $to = $toHeader ? $toHeader->getFieldBody() : '';
- $subject = $subjectHeader ? $subjectHeader->getFieldBody() : '';
-
- $reversePath = $this->_getReversePath($message);
-
- // Remove headers that would otherwise be duplicated
- $message->getHeaders()->remove('To');
- $message->getHeaders()->remove('Subject');
-
- $messageStr = $message->toString();
-
- if ($toHeader) {
- $message->getHeaders()->set($toHeader);
- }
- $message->getHeaders()->set($subjectHeader);
-
- // Separate headers from body
- if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) {
- $headers = substr($messageStr, 0, $endHeaders)."\r\n"; //Keep last EOL
- $body = substr($messageStr, $endHeaders + 4);
- } else {
- $headers = $messageStr."\r\n";
- $body = '';
- }
-
- unset($messageStr);
-
- if ("\r\n" != PHP_EOL) {
- // Non-windows (not using SMTP)
- $headers = str_replace("\r\n", PHP_EOL, $headers);
- $subject = str_replace("\r\n", PHP_EOL, $subject);
- $body = str_replace("\r\n", PHP_EOL, $body);
- $to = str_replace("\r\n", PHP_EOL, $to);
- } else {
- // Windows, using SMTP
- $headers = str_replace("\r\n.", "\r\n..", $headers);
- $subject = str_replace("\r\n.", "\r\n..", $subject);
- $body = str_replace("\r\n.", "\r\n..", $body);
- $to = str_replace("\r\n.", "\r\n..", $to);
- }
-
- if ($this->_invoker->mail($to, $subject, $body, $headers, $this->_formatExtraParams($this->_extraParams, $reversePath))) {
- if ($evt) {
- $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS);
- $evt->setFailedRecipients($failedRecipients);
- $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed');
- }
- } else {
- $failedRecipients = array_merge(
- $failedRecipients,
- array_keys((array) $message->getTo()),
- array_keys((array) $message->getCc()),
- array_keys((array) $message->getBcc())
- );
-
- if ($evt) {
- $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED);
- $evt->setFailedRecipients($failedRecipients);
- $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed');
- }
-
- $message->generateId();
-
- $count = 0;
- }
-
- return $count;
- }
-
- /**
- * Register a plugin.
- *
- * @param Swift_Events_EventListener $plugin
- */
- public function registerPlugin(Swift_Events_EventListener $plugin)
- {
- $this->_eventDispatcher->bindEventListener($plugin);
- }
-
- /** Throw a TransportException, first sending it to any listeners */
- protected function _throwException(Swift_TransportException $e)
- {
- if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) {
- $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown');
- if (!$evt->bubbleCancelled()) {
- throw $e;
- }
- } else {
- throw $e;
- }
- }
-
- /** Determine the best-use reverse path for this message */
- private function _getReversePath(Swift_Mime_Message $message)
- {
- $return = $message->getReturnPath();
- $sender = $message->getSender();
- $from = $message->getFrom();
- $path = null;
- if (!empty($return)) {
- $path = $return;
- } elseif (!empty($sender)) {
- $keys = array_keys($sender);
- $path = array_shift($keys);
- } elseif (!empty($from)) {
- $keys = array_keys($from);
- $path = array_shift($keys);
- }
-
- return $path;
- }
-
- /**
- * Fix CVE-2016-10074 by disallowing potentially unsafe shell characters.
- *
- * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.
- *
- * @param string $string The string to be validated
- *
- * @return bool
- */
- private function _isShellSafe($string)
- {
- // Future-proof
- if (escapeshellcmd($string) !== $string || !in_array(escapeshellarg($string), array("'$string'", "\"$string\""))) {
- return false;
- }
-
- $length = strlen($string);
- for ($i = 0; $i < $length; ++$i) {
- $c = $string[$i];
- // All other characters have a special meaning in at least one common shell, including = and +.
- // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.
- // Note that this does permit non-Latin alphanumeric characters based on the current locale.
- if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Return php mail extra params to use for invoker->mail.
- *
- * @param $extraParams
- * @param $reversePath
- *
- * @return string|null
- */
- private function _formatExtraParams($extraParams, $reversePath)
- {
- if (false !== strpos($extraParams, '-f%s')) {
- if (empty($reversePath) || false === $this->_isShellSafe($reversePath)) {
- $extraParams = str_replace('-f%s', '', $extraParams);
- } else {
- $extraParams = sprintf($extraParams, $reversePath);
- }
- }
-
- return !empty($extraParams) ? $extraParams : null;
- }
-}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php
index ad20e0e..5934ca9 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php
@@ -16,14 +16,14 @@
class Swift_Transport_NullTransport implements Swift_Transport
{
/** The event dispatcher from the plugin API */
- private $_eventDispatcher;
+ private $eventDispatcher;
/**
* Constructor.
*/
public function __construct(Swift_Events_EventDispatcher $eventDispatcher)
{
- $this->_eventDispatcher = $eventDispatcher;
+ $this->eventDispatcher = $eventDispatcher;
}
/**
@@ -50,18 +50,25 @@ public function stop()
{
}
+ /**
+ * {@inheritdoc}
+ */
+ public function ping()
+ {
+ return true;
+ }
+
/**
* Sends the given message.
*
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
+ * @param string[] $failedRecipients An array of failures by-reference
*
* @return int The number of sent emails
*/
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
+ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
- if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) {
- $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
+ if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) {
+ $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
if ($evt->bubbleCancelled()) {
return 0;
}
@@ -69,7 +76,7 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
if ($evt) {
$evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS);
- $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed');
+ $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed');
}
$count = (
@@ -83,11 +90,9 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
/**
* Register a plugin.
- *
- * @param Swift_Events_EventListener $plugin
*/
public function registerPlugin(Swift_Events_EventListener $plugin)
{
- $this->_eventDispatcher->bindEventListener($plugin);
+ $this->eventDispatcher->bindEventListener($plugin);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php
index 6430d5f..7f0476a 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php
@@ -24,22 +24,21 @@ class Swift_Transport_SendmailTransport extends Swift_Transport_AbstractSmtpTran
*
* @var array
*/
- private $_params = array(
+ private $params = [
'timeout' => 30,
'blocking' => 1,
'command' => '/usr/sbin/sendmail -bs',
'type' => Swift_Transport_IoBuffer::TYPE_PROCESS,
- );
+ ];
/**
* Create a new SendmailTransport with $buf for I/O.
*
- * @param Swift_Transport_IoBuffer $buf
- * @param Swift_Events_EventDispatcher $dispatcher
+ * @param string $localDomain
*/
- public function __construct(Swift_Transport_IoBuffer $buf, Swift_Events_EventDispatcher $dispatcher)
+ public function __construct(Swift_Transport_IoBuffer $buf, Swift_Events_EventDispatcher $dispatcher, $localDomain = '127.0.0.1', Swift_AddressEncoder $addressEncoder = null)
{
- parent::__construct($buf, $dispatcher);
+ parent::__construct($buf, $dispatcher, $localDomain, $addressEncoder);
}
/**
@@ -68,7 +67,7 @@ public function start()
*/
public function setCommand($command)
{
- $this->_params['command'] = $command;
+ $this->params['command'] = $command;
return $this;
}
@@ -80,7 +79,7 @@ public function setCommand($command)
*/
public function getCommand()
{
- return $this->_params['command'];
+ return $this->params['command'];
}
/**
@@ -92,12 +91,11 @@ public function getCommand()
* NOTE: If using 'sendmail -t' you will not be aware of any failures until
* they bounce (i.e. send() will always return 100% success).
*
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
+ * @param string[] $failedRecipients An array of failures by-reference
*
* @return int
*/
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
+ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
$failedRecipients = (array) $failedRecipients;
$command = $this->getCommand();
@@ -105,23 +103,23 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
$count = 0;
if (false !== strpos($command, ' -t')) {
- if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) {
- $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
+ if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) {
+ $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
if ($evt->bubbleCancelled()) {
return 0;
}
}
if (false === strpos($command, ' -f')) {
- $command .= ' -f'.escapeshellarg($this->_getReversePath($message));
+ $command .= ' -f'.escapeshellarg($this->getReversePath($message));
}
- $buffer->initialize(array_merge($this->_params, array('command' => $command)));
+ $buffer->initialize(array_merge($this->params, ['command' => $command]));
if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) {
- $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n.."));
+ $buffer->setWriteTranslations(["\r\n" => "\n", "\n." => "\n.."]);
} else {
- $buffer->setWriteTranslations(array("\r\n" => "\n"));
+ $buffer->setWriteTranslations(["\r\n" => "\n"]);
}
$count = count((array) $message->getTo())
@@ -130,20 +128,20 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
;
$message->toByteStream($buffer);
$buffer->flushBuffers();
- $buffer->setWriteTranslations(array());
+ $buffer->setWriteTranslations([]);
$buffer->terminate();
if ($evt) {
$evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS);
$evt->setFailedRecipients($failedRecipients);
- $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed');
+ $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed');
}
$message->generateId();
} elseif (false !== strpos($command, ' -bs')) {
$count = parent::send($message, $failedRecipients);
} else {
- $this->_throwException(new Swift_TransportException(
+ $this->throwException(new Swift_TransportException(
'Unsupported sendmail command flags ['.$command.']. '.
'Must be one of "-bs" or "-t" but can include additional flags.'
));
@@ -153,8 +151,8 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
}
/** Get the params to initialize the buffer */
- protected function _getBufferParams()
+ protected function getBufferParams()
{
- return $this->_params;
+ return $this->params;
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php
deleted file mode 100644
index 4cab66b..0000000
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php
+++ /dev/null
@@ -1,39 +0,0 @@
-_eventDispatcher = $eventDispatcher;
- $this->_spool = $spool;
+ $this->eventDispatcher = $eventDispatcher;
+ $this->spool = $spool;
}
/**
* Sets the spool object.
*
- * @param Swift_Spool $spool
- *
* @return $this
*/
public function setSpool(Swift_Spool $spool)
{
- $this->_spool = $spool;
+ $this->spool = $spool;
return $this;
}
@@ -51,7 +49,7 @@ public function setSpool(Swift_Spool $spool)
*/
public function getSpool()
{
- return $this->_spool;
+ return $this->spool;
}
/**
@@ -78,28 +76,35 @@ public function stop()
{
}
+ /**
+ * {@inheritdoc}
+ */
+ public function ping()
+ {
+ return true;
+ }
+
/**
* Sends the given message.
*
- * @param Swift_Mime_Message $message
- * @param string[] $failedRecipients An array of failures by-reference
+ * @param string[] $failedRecipients An array of failures by-reference
*
* @return int The number of sent e-mail's
*/
- public function send(Swift_Mime_Message $message, &$failedRecipients = null)
+ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
- if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) {
- $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
+ if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) {
+ $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed');
if ($evt->bubbleCancelled()) {
return 0;
}
}
- $success = $this->_spool->queueMessage($message);
+ $success = $this->spool->queueMessage($message);
if ($evt) {
$evt->setResult($success ? Swift_Events_SendEvent::RESULT_SPOOLED : Swift_Events_SendEvent::RESULT_FAILED);
- $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed');
+ $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed');
}
return 1;
@@ -107,11 +112,9 @@ public function send(Swift_Mime_Message $message, &$failedRecipients = null)
/**
* Register a plugin.
- *
- * @param Swift_Events_EventListener $plugin
*/
public function registerPlugin(Swift_Events_EventListener $plugin)
{
- $this->_eventDispatcher->bindEventListener($plugin);
+ $this->eventDispatcher->bindEventListener($plugin);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
index 3a9fe76..ab17f5c 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
@@ -11,55 +11,51 @@
/**
* A generic IoBuffer implementation supporting remote sockets and local processes.
*
- * @author Chris Corbyn
+ * @author Chris Corbyn
*/
class Swift_Transport_StreamBuffer extends Swift_ByteStream_AbstractFilterableInputStream implements Swift_Transport_IoBuffer
{
/** A primary socket */
- private $_stream;
+ private $stream;
/** The input stream */
- private $_in;
+ private $in;
/** The output stream */
- private $_out;
+ private $out;
/** Buffer initialization parameters */
- private $_params = array();
+ private $params = [];
/** The ReplacementFilterFactory */
- private $_replacementFactory;
+ private $replacementFactory;
/** Translations performed on data being streamed into the buffer */
- private $_translations = array();
+ private $translations = [];
/**
* Create a new StreamBuffer using $replacementFactory for transformations.
- *
- * @param Swift_ReplacementFilterFactory $replacementFactory
*/
public function __construct(Swift_ReplacementFilterFactory $replacementFactory)
{
- $this->_replacementFactory = $replacementFactory;
+ $this->replacementFactory = $replacementFactory;
}
/**
* Perform any initialization needed, using the given $params.
*
* Parameters will vary depending upon the type of IoBuffer used.
- *
- * @param array $params
*/
public function initialize(array $params)
{
- $this->_params = $params;
+ $this->params = $params;
switch ($params['type']) {
case self::TYPE_PROCESS:
- $this->_establishProcessConnection();
+ $this->establishProcessConnection();
break;
case self::TYPE_SOCKET:
default:
- $this->_establishSocketConnection();
+ $this->establishSocketConnection();
break;
}
}
@@ -72,21 +68,21 @@ public function initialize(array $params)
*/
public function setParam($param, $value)
{
- if (isset($this->_stream)) {
+ if (isset($this->stream)) {
switch ($param) {
case 'timeout':
- if ($this->_stream) {
- stream_set_timeout($this->_stream, $value);
+ if ($this->stream) {
+ stream_set_timeout($this->stream, $value);
}
break;
case 'blocking':
- if ($this->_stream) {
- stream_set_blocking($this->_stream, 1);
+ if ($this->stream) {
+ stream_set_blocking($this->stream, 1);
}
}
}
- $this->_params[$param] = $value;
+ $this->params[$param] = $value;
}
public function startTLS()
@@ -95,12 +91,7 @@ public function startTLS()
// To support modern tls we allow explicit tls1.0, tls1.1, tls1.2
// Ssl3 and older are not allowed because they are vulnerable
// @TODO make tls arguments configurable
- $cryptoType = STREAM_CRYPTO_METHOD_TLS_CLIENT;
- if (PHP_VERSION_ID >= 50600) {
- $cryptoType = STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
- }
-
- return stream_socket_enable_crypto($this->_stream, true, $cryptoType);
+ return stream_socket_enable_crypto($this->stream, true, STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT);
}
/**
@@ -108,22 +99,22 @@ public function startTLS()
*/
public function terminate()
{
- if (isset($this->_stream)) {
- switch ($this->_params['type']) {
+ if (isset($this->stream)) {
+ switch ($this->params['type']) {
case self::TYPE_PROCESS:
- fclose($this->_in);
- fclose($this->_out);
- proc_close($this->_stream);
+ fclose($this->in);
+ fclose($this->out);
+ proc_close($this->stream);
break;
case self::TYPE_SOCKET:
default:
- fclose($this->_stream);
+ fclose($this->stream);
break;
}
}
- $this->_stream = null;
- $this->_out = null;
- $this->_in = null;
+ $this->stream = null;
+ $this->out = null;
+ $this->in = null;
}
/**
@@ -136,19 +127,19 @@ public function terminate()
*/
public function setWriteTranslations(array $replacements)
{
- foreach ($this->_translations as $search => $replace) {
+ foreach ($this->translations as $search => $replace) {
if (!isset($replacements[$search])) {
$this->removeFilter($search);
- unset($this->_translations[$search]);
+ unset($this->translations[$search]);
}
}
foreach ($replacements as $search => $replace) {
- if (!isset($this->_translations[$search])) {
+ if (!isset($this->translations[$search])) {
$this->addFilter(
- $this->_replacementFactory->createFilter($search, $replace), $search
+ $this->replacementFactory->createFilter($search, $replace), $search
);
- $this->_translations[$search] = true;
+ $this->translations[$search] = true;
}
}
}
@@ -161,20 +152,20 @@ public function setWriteTranslations(array $replacements)
*
* @param int $sequence of last write to scan from
*
- * @throws Swift_IoException
- *
* @return string
+ *
+ * @throws Swift_IoException
*/
public function readLine($sequence)
{
- if (isset($this->_out) && !feof($this->_out)) {
- $line = fgets($this->_out);
- if (strlen($line) == 0) {
- $metas = stream_get_meta_data($this->_out);
+ if (isset($this->out) && !feof($this->out)) {
+ $line = fgets($this->out);
+ if (0 == strlen($line)) {
+ $metas = stream_get_meta_data($this->out);
if ($metas['timed_out']) {
throw new Swift_IoException(
'Connection to '.
- $this->_getReadConnectionDescription().
+ $this->getReadConnectionDescription().
' Timed Out'
);
}
@@ -193,20 +184,20 @@ public function readLine($sequence)
*
* @param int $length
*
- * @throws Swift_IoException
- *
* @return string|bool
+ *
+ * @throws Swift_IoException
*/
public function read($length)
{
- if (isset($this->_out) && !feof($this->_out)) {
- $ret = fread($this->_out, $length);
- if (strlen($ret) == 0) {
- $metas = stream_get_meta_data($this->_out);
+ if (isset($this->out) && !feof($this->out)) {
+ $ret = fread($this->out, $length);
+ if (0 == strlen($ret)) {
+ $metas = stream_get_meta_data($this->out);
if ($metas['timed_out']) {
throw new Swift_IoException(
'Connection to '.
- $this->_getReadConnectionDescription().
+ $this->getReadConnectionDescription().
' Timed Out'
);
}
@@ -222,22 +213,22 @@ public function setReadPointer($byteOffset)
}
/** Flush the stream contents */
- protected function _flush()
+ protected function flush()
{
- if (isset($this->_in)) {
- fflush($this->_in);
+ if (isset($this->in)) {
+ fflush($this->in);
}
}
/** Write this bytes to the stream */
- protected function _commit($bytes)
+ protected function doCommit($bytes)
{
- if (isset($this->_in)) {
+ if (isset($this->in)) {
$bytesToWrite = strlen($bytes);
$totalBytesWritten = 0;
while ($totalBytesWritten < $bytesToWrite) {
- $bytesWritten = fwrite($this->_in, substr($bytes, $totalBytesWritten));
+ $bytesWritten = fwrite($this->in, substr($bytes, $totalBytesWritten));
if (false === $bytesWritten || 0 === $bytesWritten) {
break;
}
@@ -246,7 +237,7 @@ protected function _commit($bytes)
}
if ($totalBytesWritten > 0) {
- return ++$this->_sequence;
+ return ++$this->sequence;
}
}
}
@@ -254,78 +245,79 @@ protected function _commit($bytes)
/**
* Establishes a connection to a remote server.
*/
- private function _establishSocketConnection()
+ private function establishSocketConnection()
{
- $host = $this->_params['host'];
- if (!empty($this->_params['protocol'])) {
- $host = $this->_params['protocol'].'://'.$host;
+ $host = $this->params['host'];
+ if (!empty($this->params['protocol'])) {
+ $host = $this->params['protocol'].'://'.$host;
}
$timeout = 15;
- if (!empty($this->_params['timeout'])) {
- $timeout = $this->_params['timeout'];
+ if (!empty($this->params['timeout'])) {
+ $timeout = $this->params['timeout'];
}
- $options = array();
- if (!empty($this->_params['sourceIp'])) {
- $options['socket']['bindto'] = $this->_params['sourceIp'].':0';
+ $options = [];
+ if (!empty($this->params['sourceIp'])) {
+ $options['socket']['bindto'] = $this->params['sourceIp'].':0';
}
- if (isset($this->_params['stream_context_options'])) {
- $options = array_merge($options, $this->_params['stream_context_options']);
+
+ if (isset($this->params['stream_context_options'])) {
+ $options = array_merge($options, $this->params['stream_context_options']);
}
$streamContext = stream_context_create($options);
- $this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
- if (false === $this->_stream) {
+ $this->stream = @stream_socket_client($host.':'.$this->params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
+ if (false === $this->stream) {
throw new Swift_TransportException(
- 'Connection could not be established with host '.$this->_params['host'].
+ 'Connection could not be established with host '.$this->params['host'].
' ['.$errstr.' #'.$errno.']'
);
}
- if (!empty($this->_params['blocking'])) {
- stream_set_blocking($this->_stream, 1);
+ if (!empty($this->params['blocking'])) {
+ stream_set_blocking($this->stream, 1);
} else {
- stream_set_blocking($this->_stream, 0);
+ stream_set_blocking($this->stream, 0);
}
- stream_set_timeout($this->_stream, $timeout);
- $this->_in = &$this->_stream;
- $this->_out = &$this->_stream;
+ stream_set_timeout($this->stream, $timeout);
+ $this->in = &$this->stream;
+ $this->out = &$this->stream;
}
/**
* Opens a process for input/output.
*/
- private function _establishProcessConnection()
+ private function establishProcessConnection()
{
- $command = $this->_params['command'];
- $descriptorSpec = array(
- 0 => array('pipe', 'r'),
- 1 => array('pipe', 'w'),
- 2 => array('pipe', 'w'),
- );
- $pipes = array();
- $this->_stream = proc_open($command, $descriptorSpec, $pipes);
+ $command = $this->params['command'];
+ $descriptorSpec = [
+ 0 => ['pipe', 'r'],
+ 1 => ['pipe', 'w'],
+ 2 => ['pipe', 'w'],
+ ];
+ $pipes = [];
+ $this->stream = proc_open($command, $descriptorSpec, $pipes);
stream_set_blocking($pipes[2], 0);
if ($err = stream_get_contents($pipes[2])) {
throw new Swift_TransportException(
'Process could not be started ['.$err.']'
);
}
- $this->_in = &$pipes[0];
- $this->_out = &$pipes[1];
+ $this->in = &$pipes[0];
+ $this->out = &$pipes[1];
}
- private function _getReadConnectionDescription()
+ private function getReadConnectionDescription()
{
- switch ($this->_params['type']) {
+ switch ($this->params['type']) {
case self::TYPE_PROCESS:
- return 'Process '.$this->_params['command'];
+ return 'Process '.$this->params['command'];
break;
case self::TYPE_SOCKET:
default:
- $host = $this->_params['host'];
- if (!empty($this->_params['protocol'])) {
- $host = $this->_params['protocol'].'://'.$host;
+ $host = $this->params['host'];
+ if (!empty($this->params['protocol'])) {
+ $host = $this->params['protocol'].'://'.$host;
}
- $host .= ':'.$this->_params['port'];
+ $host .= ':'.$this->params['port'];
return $host;
break;
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php
index 4ae2412..c741745 100644
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php
@@ -18,9 +18,8 @@ class Swift_TransportException extends Swift_IoException
/**
* Create a new TransportException with $message.
*
- * @param string $message
- * @param int $code
- * @param Exception $previous
+ * @param string $message
+ * @param int $code
*/
public function __construct($message, $code = 0, Exception $previous = null)
{
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Validate.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Validate.php
deleted file mode 100644
index e16c212..0000000
--- a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Validate.php
+++ /dev/null
@@ -1,43 +0,0 @@
-
- */
-class Swift_Validate
-{
- /**
- * Grammar Object.
- *
- * @var Swift_Mime_Grammar
- */
- private static $grammar = null;
-
- /**
- * Checks if an e-mail address matches the current grammars.
- *
- * @param string $email
- *
- * @return bool
- */
- public static function email($email)
- {
- if (self::$grammar === null) {
- self::$grammar = Swift_DependencyContainer::getInstance()
- ->lookup('mime.grammar');
- }
-
- return (bool) preg_match(
- '/^'.self::$grammar->getDefinition('addr-spec').'$/D',
- $email
- );
- }
-}
diff --git a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/cache_deps.php b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/cache_deps.php
index 6023448..9d94d77 100644
--- a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/cache_deps.php
+++ b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/cache_deps.php
@@ -12,11 +12,11 @@
->register('cache.array')
->asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache')
- ->withDependencies(array('cache.inputstream'))
+ ->withDependencies(['cache.inputstream'])
->register('cache.disk')
->asSharedInstanceOf('Swift_KeyCache_DiskKeyCache')
- ->withDependencies(array('cache.inputstream', 'tempdir'))
+ ->withDependencies(['cache.inputstream', 'tempdir'])
->register('cache.inputstream')
->asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream')
diff --git a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php
index d575e4f..975945b 100644
--- a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php
+++ b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php
@@ -6,96 +6,112 @@
->register('properties.charset')
->asValue('utf-8')
- ->register('mime.grammar')
- ->asSharedInstanceOf('Swift_Mime_Grammar')
+ ->register('email.validator')
+ ->asSharedInstanceOf('Egulias\EmailValidator\EmailValidator')
+
+ ->register('mime.idgenerator.idright')
+ // As SERVER_NAME can come from the user in certain configurations, check that
+ // it does not contain forbidden characters (see RFC 952 and RFC 2181). Use
+ // preg_replace() instead of preg_match() to prevent DoS attacks with long host names.
+ ->asValue(!empty($_SERVER['SERVER_NAME']) && '' === preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'swift.generated')
+
+ ->register('mime.idgenerator')
+ ->asSharedInstanceOf('Swift_Mime_IdGenerator')
+ ->withDependencies([
+ 'mime.idgenerator.idright',
+ ])
->register('mime.message')
->asNewInstanceOf('Swift_Mime_SimpleMessage')
- ->withDependencies(array(
+ ->withDependencies([
'mime.headerset',
- 'mime.qpcontentencoder',
+ 'mime.textcontentencoder',
'cache',
- 'mime.grammar',
+ 'mime.idgenerator',
'properties.charset',
- ))
+ ])
->register('mime.part')
->asNewInstanceOf('Swift_Mime_MimePart')
- ->withDependencies(array(
+ ->withDependencies([
'mime.headerset',
- 'mime.qpcontentencoder',
+ 'mime.textcontentencoder',
'cache',
- 'mime.grammar',
+ 'mime.idgenerator',
'properties.charset',
- ))
+ ])
->register('mime.attachment')
->asNewInstanceOf('Swift_Mime_Attachment')
- ->withDependencies(array(
+ ->withDependencies([
'mime.headerset',
'mime.base64contentencoder',
'cache',
- 'mime.grammar',
- ))
+ 'mime.idgenerator',
+ ])
->addConstructorValue($swift_mime_types)
->register('mime.embeddedfile')
->asNewInstanceOf('Swift_Mime_EmbeddedFile')
- ->withDependencies(array(
+ ->withDependencies([
'mime.headerset',
'mime.base64contentencoder',
'cache',
- 'mime.grammar',
- ))
+ 'mime.idgenerator',
+ ])
->addConstructorValue($swift_mime_types)
->register('mime.headerfactory')
->asNewInstanceOf('Swift_Mime_SimpleHeaderFactory')
- ->withDependencies(array(
- 'mime.qpheaderencoder',
- 'mime.rfc2231encoder',
- 'mime.grammar',
- 'properties.charset',
- ))
+ ->withDependencies([
+ 'mime.qpheaderencoder',
+ 'mime.rfc2231encoder',
+ 'email.validator',
+ 'properties.charset',
+ 'address.idnaddressencoder',
+ ])
->register('mime.headerset')
->asNewInstanceOf('Swift_Mime_SimpleHeaderSet')
- ->withDependencies(array('mime.headerfactory', 'properties.charset'))
+ ->withDependencies(['mime.headerfactory', 'properties.charset'])
->register('mime.qpheaderencoder')
->asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder')
- ->withDependencies(array('mime.charstream'))
+ ->withDependencies(['mime.charstream'])
->register('mime.base64headerencoder')
->asNewInstanceOf('Swift_Mime_HeaderEncoder_Base64HeaderEncoder')
- ->withDependencies(array('mime.charstream'))
+ ->withDependencies(['mime.charstream'])
->register('mime.charstream')
- ->asNewInstanceOf('Swift_CharacterStream_NgCharacterStream')
- ->withDependencies(array('mime.characterreaderfactory', 'properties.charset'))
+ ->asNewInstanceOf('Swift_CharacterStream_CharacterStream')
+ ->withDependencies(['mime.characterreaderfactory', 'properties.charset'])
->register('mime.bytecanonicalizer')
->asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter')
- ->addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A)))
- ->addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A)))
+ ->addConstructorValue([[0x0D, 0x0A], [0x0D], [0x0A]])
+ ->addConstructorValue([[0x0A], [0x0A], [0x0D, 0x0A]])
->register('mime.characterreaderfactory')
->asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory')
+ ->register('mime.textcontentencoder')
+ ->asAliasOf('mime.qpcontentencoder')
+
->register('mime.safeqpcontentencoder')
->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder')
- ->withDependencies(array('mime.charstream', 'mime.bytecanonicalizer'))
+ ->withDependencies(['mime.charstream', 'mime.bytecanonicalizer'])
->register('mime.rawcontentencoder')
->asNewInstanceOf('Swift_Mime_ContentEncoder_RawContentEncoder')
->register('mime.nativeqpcontentencoder')
- ->withDependencies(array('properties.charset'))
+ ->withDependencies(['properties.charset'])
->asNewInstanceOf('Swift_Mime_ContentEncoder_NativeQpContentEncoder')
- ->register('mime.qpcontentencoderproxy')
+ ->register('mime.qpcontentencoder')
->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoderProxy')
- ->withDependencies(array('mime.safeqpcontentencoder', 'mime.nativeqpcontentencoder', 'properties.charset'))
+ ->withDependencies(['mime.safeqpcontentencoder', 'mime.nativeqpcontentencoder', 'properties.charset'])
->register('mime.7bitcontentencoder')
->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder')
@@ -112,12 +128,7 @@
->register('mime.rfc2231encoder')
->asNewInstanceOf('Swift_Encoder_Rfc2231Encoder')
- ->withDependencies(array('mime.charstream'))
-
- // As of PHP 5.4.7, the quoted_printable_encode() function behaves correctly.
- // see https://github.com/php/php-src/commit/18bb426587d62f93c54c40bf8535eb8416603629
- ->register('mime.qpcontentencoder')
- ->asAliasOf(PHP_VERSION_ID >= 50407 ? 'mime.qpcontentencoderproxy' : 'mime.safeqpcontentencoder')
+ ->withDependencies(['mime.charstream'])
;
unset($swift_mime_types);
diff --git a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php
index 77e432c..34a63c7 100644
--- a/vendor/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php
+++ b/vendor/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php
@@ -1,24 +1,29 @@
register('transport.localdomain')
+ // As SERVER_NAME can come from the user in certain configurations, check that
+ // it does not contain forbidden characters (see RFC 952 and RFC 2181). Use
+ // preg_replace() instead of preg_match() to prevent DoS attacks with long host names.
+ ->asValue(!empty($_SERVER['SERVER_NAME']) && '' === preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $_SERVER['SERVER_NAME']) ? trim($_SERVER['SERVER_NAME'], '[]') : '127.0.0.1')
+
->register('transport.smtp')
->asNewInstanceOf('Swift_Transport_EsmtpTransport')
- ->withDependencies(array(
+ ->withDependencies([
'transport.buffer',
- array('transport.authhandler'),
+ 'transport.smtphandlers',
'transport.eventdispatcher',
- ))
+ 'transport.localdomain',
+ 'address.idnaddressencoder',
+ ])
->register('transport.sendmail')
->asNewInstanceOf('Swift_Transport_SendmailTransport')
- ->withDependencies(array(
+ ->withDependencies([
'transport.buffer',
'transport.eventdispatcher',
- ))
-
- ->register('transport.mail')
- ->asNewInstanceOf('Swift_Transport_MailTransport')
- ->withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher'))
+ 'transport.localdomain',
+ ])
->register('transport.loadbalanced')
->asNewInstanceOf('Swift_Transport_LoadBalancedTransport')
@@ -28,30 +33,40 @@
->register('transport.spool')
->asNewInstanceOf('Swift_Transport_SpoolTransport')
- ->withDependencies(array('transport.eventdispatcher'))
+ ->withDependencies(['transport.eventdispatcher'])
->register('transport.null')
->asNewInstanceOf('Swift_Transport_NullTransport')
- ->withDependencies(array('transport.eventdispatcher'))
-
- ->register('transport.mailinvoker')
- ->asSharedInstanceOf('Swift_Transport_SimpleMailInvoker')
+ ->withDependencies(['transport.eventdispatcher'])
->register('transport.buffer')
->asNewInstanceOf('Swift_Transport_StreamBuffer')
- ->withDependencies(array('transport.replacementfactory'))
+ ->withDependencies(['transport.replacementfactory'])
+
+ ->register('transport.smtphandlers')
+ ->asArray()
+ ->withDependencies(['transport.authhandler'])
->register('transport.authhandler')
->asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler')
- ->withDependencies(array(
- array(
- 'transport.crammd5auth',
- 'transport.loginauth',
- 'transport.plainauth',
- 'transport.ntlmauth',
- 'transport.xoauth2auth',
- ),
- ))
+ ->withDependencies(['transport.authhandlers'])
+
+ ->register('transport.authhandlers')
+ ->asArray()
+ ->withDependencies([
+ 'transport.crammd5auth',
+ 'transport.loginauth',
+ 'transport.plainauth',
+ 'transport.ntlmauth',
+ 'transport.xoauth2auth',
+ ])
+
+ ->register('transport.smtputf8handler')
+ ->asNewInstanceOf('Swift_Transport_Esmtp_SmtpUtf8Handler')
+
+ ->register('transport.8bitmimehandler')
+ ->asNewInstanceOf('Swift_Transport_Esmtp_EightBitMimeHandler')
+ ->addConstructorValue('8BITMIME')
->register('transport.crammd5auth')
->asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator')
@@ -73,4 +88,10 @@
->register('transport.replacementfactory')
->asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory')
+
+ ->register('address.idnaddressencoder')
+ ->asNewInstanceOf('Swift_AddressEncoder_IdnAddressEncoder')
+
+ ->register('address.utf8addressencoder')
+ ->asNewInstanceOf('Swift_AddressEncoder_Utf8AddressEncoder')
;
diff --git a/vendor/swiftmailer/swiftmailer/lib/mime_types.php b/vendor/swiftmailer/swiftmailer/lib/mime_types.php
index b42c1cc..72c6fd2 100644
--- a/vendor/swiftmailer/swiftmailer/lib/mime_types.php
+++ b/vendor/swiftmailer/swiftmailer/lib/mime_types.php
@@ -17,7 +17,7 @@
// You may add or take away what you like (lowercase required)
-$swift_mime_types = array(
+$swift_mime_types = [
'3dml' => 'text/vnd.in3d.3dml',
'3ds' => 'image/x-3ds',
'3g2' => 'video/3gpp2',
@@ -1004,4 +1004,4 @@
'zirz' => 'application/vnd.zul',
'zmm' => 'application/vnd.handheld-entertainment+xml',
'123' => 'application/vnd.lotus-1-2-3',
-);
+];
diff --git a/vendor/swiftmailer/swiftmailer/lib/preferences.php b/vendor/swiftmailer/swiftmailer/lib/preferences.php
index 0b430e6..27b7065 100644
--- a/vendor/swiftmailer/swiftmailer/lib/preferences.php
+++ b/vendor/swiftmailer/swiftmailer/lib/preferences.php
@@ -17,9 +17,3 @@
if (@is_writable($tmpDir = sys_get_temp_dir())) {
$preferences->setTempDir($tmpDir)->setCacheType('disk');
}
-
-// this should only be done when Swiftmailer won't use the native QP content encoder
-// see mime_deps.php
-if (PHP_VERSION_ID < 50407) {
- $preferences->setQPDotEscape(false);
-}
diff --git a/vendor/swiftmailer/swiftmailer/lib/swift_init.php b/vendor/swiftmailer/swiftmailer/lib/swift_init.php
deleted file mode 100644
index ff71963..0000000
--- a/vendor/swiftmailer/swiftmailer/lib/swift_init.php
+++ /dev/null
@@ -1,28 +0,0 @@
- 'application/x-php',
'php3' => 'application/x-php',
'php4' => 'application/x-php',
@@ -95,7 +95,7 @@ function generateUpToDateMimeArray()
'xls' => 'application/vnd.ms-excel',
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'xml' => 'application/xml',
- );
+ ];
// wrap array for generating file
foreach ($valid_mime_types_preset as $extension => $mime_type) {
@@ -103,9 +103,6 @@ function generateUpToDateMimeArray()
$valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'";
}
- // collect extensions
- $valid_extensions = array();
-
// all extensions from second match
foreach ($matches[2] as $i => $extensions) {
// explode multiple extensions from string
@@ -113,7 +110,7 @@ function generateUpToDateMimeArray()
// force array for foreach
if (!is_array($extensions)) {
- $extensions = array($extensions);
+ $extensions = [$extensions];
}
foreach ($extensions as $extension) {
@@ -122,9 +119,6 @@ function generateUpToDateMimeArray()
// check if string length lower than 10
if (strlen($extension) < 10) {
- // add extension
- $valid_extensions[] = $extension;
-
if (!isset($valid_mime_types[$mime_type])) {
// generate array for mimetype to extension resolver (only first match)
$valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'";
@@ -145,18 +139,13 @@ function generateUpToDateMimeArray()
// get all matching extensions from match
foreach ((array) $node->glob['pattern'] as $extension) {
// skip none glob extensions
- if (strpos($extension, '.') === false) {
+ if (false === strpos($extension, '.')) {
continue;
}
// remove get only last part
$extension = explode('.', strtolower($extension));
$extension = end($extension);
-
- // maximum length in database column
- if (strlen($extension) <= 9) {
- $valid_extensions[] = $extension;
- }
}
if (isset($node->glob['pattern'][0])) {
@@ -167,7 +156,7 @@ function generateUpToDateMimeArray()
$extension = strtolower(trim($node->glob['ddpattern'][0], '*.'));
// skip none glob extensions and check if string length between 1 and 10
- if (strpos($extension, '.') !== false || strlen($extension) < 1 || strlen($extension) > 9) {
+ if (false !== strpos($extension, '.') || strlen($extension) < 1 || strlen($extension) > 9) {
continue;
}
diff --git a/vendor/swiftmailer/swiftmailer/phpunit.xml.dist b/vendor/swiftmailer/swiftmailer/phpunit.xml.dist
index 606c5b4..9ec0c49 100644
--- a/vendor/swiftmailer/swiftmailer/phpunit.xml.dist
+++ b/vendor/swiftmailer/swiftmailer/phpunit.xml.dist
@@ -34,6 +34,5 @@
-
diff --git a/vendor/swiftmailer/swiftmailer/tests/IdenticalBinaryConstraint.php b/vendor/swiftmailer/swiftmailer/tests/IdenticalBinaryConstraint.php
index 069d11a..0a4a6da 100644
--- a/vendor/swiftmailer/swiftmailer/tests/IdenticalBinaryConstraint.php
+++ b/vendor/swiftmailer/swiftmailer/tests/IdenticalBinaryConstraint.php
@@ -5,7 +5,7 @@
*
* @author Chris Corbyn
*/
-class IdenticalBinaryConstraint extends \PHPUnit_Framework_Constraint
+class IdenticalBinaryConstraint extends \PHPUnit\Framework\Constraint\Constraint
{
protected $value;
@@ -37,7 +37,7 @@ public function matches($other)
*/
public function toString()
{
- return 'indentical binary';
+ return 'identical binary';
}
/**
diff --git a/vendor/swiftmailer/swiftmailer/tests/SwiftMailerSmokeTestCase.php b/vendor/swiftmailer/swiftmailer/tests/SwiftMailerSmokeTestCase.php
index 71c5713..13bd240 100644
--- a/vendor/swiftmailer/swiftmailer/tests/SwiftMailerSmokeTestCase.php
+++ b/vendor/swiftmailer/swiftmailer/tests/SwiftMailerSmokeTestCase.php
@@ -16,7 +16,7 @@ protected function setUp()
}
}
- protected function _getMailer()
+ protected function getMailer()
{
switch (SWIFT_SMOKE_TRANSPORT_TYPE) {
case 'smtp':
diff --git a/vendor/swiftmailer/swiftmailer/tests/SwiftMailerTestCase.php b/vendor/swiftmailer/swiftmailer/tests/SwiftMailerTestCase.php
index f0e2736..fe2c62b 100644
--- a/vendor/swiftmailer/swiftmailer/tests/SwiftMailerTestCase.php
+++ b/vendor/swiftmailer/swiftmailer/tests/SwiftMailerTestCase.php
@@ -1,19 +1,23 @@
_testFile = sys_get_temp_dir().'/swift-test-file'.__CLASS__;
- file_put_contents($this->_testFile, 'abcdefghijklm');
+ $this->testFile = sys_get_temp_dir().'/swift-test-file'.__CLASS__;
+ file_put_contents($this->testFile, 'abcdefghijklm');
}
protected function tearDown()
{
- unlink($this->_testFile);
+ unlink($this->testFile);
}
public function testFileDataCanBeRead()
{
- $file = $this->_createFileStream($this->_testFile);
+ $file = $this->createFileStream($this->testFile);
$str = '';
while (false !== $bytes = $file->read(8192)) {
$str .= $bytes;
@@ -27,7 +27,7 @@ public function testFileDataCanBeRead()
public function testFileDataCanBeReadSequentially()
{
- $file = $this->_createFileStream($this->_testFile);
+ $file = $this->createFileStream($this->testFile);
$this->assertEquals('abcde', $file->read(5));
$this->assertEquals('fghijklm', $file->read(8));
$this->assertFalse($file->read(1));
@@ -35,20 +35,20 @@ public function testFileDataCanBeReadSequentially()
public function testFilenameIsReturned()
{
- $file = $this->_createFileStream($this->_testFile);
- $this->assertEquals($this->_testFile, $file->getPath());
+ $file = $this->createFileStream($this->testFile);
+ $this->assertEquals($this->testFile, $file->getPath());
}
public function testFileCanBeWrittenTo()
{
- $file = $this->_createFileStream($this->_testFile, true);
+ $file = $this->createFileStream($this->testFile, true);
$file->write('foobar');
$this->assertEquals('foobar', $file->read(8192));
}
public function testReadingFromThenWritingToFile()
{
- $file = $this->_createFileStream($this->_testFile, true);
+ $file = $this->createFileStream($this->testFile, true);
$file->write('foobar');
$this->assertEquals('foobar', $file->read(8192));
$file->write('zipbutton');
@@ -57,28 +57,28 @@ public function testReadingFromThenWritingToFile()
public function testWritingToFileWithCanonicalization()
{
- $file = $this->_createFileStream($this->_testFile, true);
- $file->addFilter($this->_createFilter(array("\r\n", "\r"), "\n"), 'allToLF');
+ $file = $this->createFileStream($this->testFile, true);
+ $file->addFilter($this->createFilter(["\r\n", "\r"], "\n"), 'allToLF');
$file->write("foo\r\nbar\r");
$file->write("\nzip\r\ntest\r");
$file->flushBuffers();
- $this->assertEquals("foo\nbar\nzip\ntest\n", file_get_contents($this->_testFile));
+ $this->assertEquals("foo\nbar\nzip\ntest\n", file_get_contents($this->testFile));
}
public function testWritingWithFulleMessageLengthOfAMultipleOf8192()
{
- $file = $this->_createFileStream($this->_testFile, true);
- $file->addFilter($this->_createFilter(array("\r\n", "\r"), "\n"), 'allToLF');
+ $file = $this->createFileStream($this->testFile, true);
+ $file->addFilter($this->createFilter(["\r\n", "\r"], "\n"), 'allToLF');
$file->write('');
$file->flushBuffers();
- $this->assertEquals('', file_get_contents($this->_testFile));
+ $this->assertEquals('', file_get_contents($this->testFile));
}
public function testBindingOtherStreamsMirrorsWriteOperations()
{
- $file = $this->_createFileStream($this->_testFile, true);
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $file = $this->createFileStream($this->testFile, true);
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->at(0))
->method('write')
@@ -102,11 +102,11 @@ public function testBindingOtherStreamsMirrorsWriteOperations()
public function testBindingOtherStreamsMirrorsFlushOperations()
{
- $file = $this->_createFileStream(
- $this->_testFile, true
+ $file = $this->createFileStream(
+ $this->testFile, true
);
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->once())
->method('flushBuffers');
@@ -121,9 +121,9 @@ public function testBindingOtherStreamsMirrorsFlushOperations()
public function testUnbindingStreamPreventsFurtherWrites()
{
- $file = $this->_createFileStream($this->_testFile, true);
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $file = $this->createFileStream($this->testFile, true);
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->at(0))
->method('write')
@@ -145,17 +145,17 @@ public function testUnbindingStreamPreventsFurtherWrites()
$file->write('y');
}
- private function _createFilter($search, $replace)
+ private function createFilter($search, $replace)
{
return new Swift_StreamFilters_StringReplacementFilter($search, $replace);
}
- private function _createMockInputStream()
+ private function createMockInputStream()
{
return $this->getMockBuilder('Swift_InputByteStream')->getMock();
}
- private function _createFileStream($file, $writable = false)
+ private function createFileStream($file, $writable = false)
{
return new Swift_ByteStream_FileByteStream($file, $writable);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/CharacterReaderFactory/SimpleCharacterReaderFactoryAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/CharacterReaderFactory/SimpleCharacterReaderFactoryAcceptanceTest.php
index c13e570..fcc7ad4 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/CharacterReaderFactory/SimpleCharacterReaderFactoryAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/CharacterReaderFactory/SimpleCharacterReaderFactoryAcceptanceTest.php
@@ -1,28 +1,28 @@
_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
+ $this->factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
}
public function testCreatingUtf8Reader()
{
- foreach (array('utf8', 'utf-8', 'UTF-8', 'UTF8') as $utf8) {
- $reader = $this->_factory->getReaderFor($utf8);
- $this->assertInstanceOf($this->_prefix.'Utf8Reader', $reader);
+ foreach (['utf8', 'utf-8', 'UTF-8', 'UTF8'] as $utf8) {
+ $reader = $this->factory->getReaderFor($utf8);
+ $this->assertInstanceOf($this->prefix.'Utf8Reader', $reader);
}
}
public function testCreatingIso8859XReaders()
{
- $charsets = array();
+ $charsets = [];
foreach (range(1, 16) as $number) {
- foreach (array('iso', 'iec') as $body) {
+ foreach (['iso', 'iec'] as $body) {
$charsets[] = $body.'-8859-'.$number;
$charsets[] = $body.'8859-'.$number;
$charsets[] = strtoupper($body).'-8859-'.$number;
@@ -31,15 +31,15 @@ public function testCreatingIso8859XReaders()
}
foreach ($charsets as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingWindows125XReaders()
{
- $charsets = array();
+ $charsets = [];
foreach (range(0, 8) as $number) {
$charsets[] = 'windows-125'.$number;
$charsets[] = 'windows125'.$number;
@@ -48,15 +48,15 @@ public function testCreatingWindows125XReaders()
}
foreach ($charsets as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingCodePageReaders()
{
- $charsets = array();
+ $charsets = [];
foreach (range(0, 8) as $number) {
$charsets[] = 'cp-125'.$number;
$charsets[] = 'cp125'.$number;
@@ -64,8 +64,8 @@ public function testCreatingCodePageReaders()
$charsets[] = 'CP125'.$number;
}
- foreach (array(437, 737, 850, 855, 857, 858, 860,
- 861, 863, 865, 866, 869, ) as $number) {
+ foreach ([437, 737, 850, 855, 857, 858, 860,
+ 861, 863, 865, 866, 869, ] as $number) {
$charsets[] = 'cp-'.$number;
$charsets[] = 'cp'.$number;
$charsets[] = 'CP-'.$number;
@@ -73,34 +73,34 @@ public function testCreatingCodePageReaders()
}
foreach ($charsets as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingAnsiReader()
{
- foreach (array('ansi', 'ANSI') as $ansi) {
- $reader = $this->_factory->getReaderFor($ansi);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['ansi', 'ANSI'] as $ansi) {
+ $reader = $this->factory->getReaderFor($ansi);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingMacintoshReader()
{
- foreach (array('macintosh', 'MACINTOSH') as $mac) {
- $reader = $this->_factory->getReaderFor($mac);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['macintosh', 'MACINTOSH'] as $mac) {
+ $reader = $this->factory->getReaderFor($mac);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingKOIReaders()
{
- $charsets = array();
- foreach (array('7', '8-r', '8-u', '8u', '8r') as $end) {
+ $charsets = [];
+ foreach (['7', '8-r', '8-u', '8u', '8r'] as $end) {
$charsets[] = 'koi-'.$end;
$charsets[] = 'koi'.$end;
$charsets[] = 'KOI-'.$end;
@@ -108,71 +108,71 @@ public function testCreatingKOIReaders()
}
foreach ($charsets as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingIsciiReaders()
{
- foreach (array('iscii', 'ISCII', 'viscii', 'VISCII') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['iscii', 'ISCII', 'viscii', 'VISCII'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingMIKReader()
{
- foreach (array('mik', 'MIK') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['mik', 'MIK'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingCorkReader()
{
- foreach (array('cork', 'CORK', 't1', 'T1') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['cork', 'CORK', 't1', 'T1'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(1, $reader->getInitialByteSize());
}
}
public function testCreatingUcs2Reader()
{
- foreach (array('ucs-2', 'UCS-2', 'ucs2', 'UCS2') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['ucs-2', 'UCS-2', 'ucs2', 'UCS2'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(2, $reader->getInitialByteSize());
}
}
public function testCreatingUtf16Reader()
{
- foreach (array('utf-16', 'UTF-16', 'utf16', 'UTF16') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['utf-16', 'UTF-16', 'utf16', 'UTF16'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(2, $reader->getInitialByteSize());
}
}
public function testCreatingUcs4Reader()
{
- foreach (array('ucs-4', 'UCS-4', 'ucs4', 'UCS4') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['ucs-4', 'UCS-4', 'ucs4', 'UCS4'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(4, $reader->getInitialByteSize());
}
}
public function testCreatingUtf32Reader()
{
- foreach (array('utf-32', 'UTF-32', 'utf32', 'UTF32') as $charset) {
- $reader = $this->_factory->getReaderFor($charset);
- $this->assertInstanceOf($this->_prefix.'GenericFixedWidthReader', $reader);
+ foreach (['utf-32', 'UTF-32', 'utf32', 'UTF32'] as $charset) {
+ $reader = $this->factory->getReaderFor($charset);
+ $this->assertInstanceOf($this->prefix.'GenericFixedWidthReader', $reader);
$this->assertEquals(4, $reader->getInitialByteSize());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/DependencyContainerAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/DependencyContainerAcceptanceTest.php
index e83c2bf..3c1b515 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/DependencyContainerAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/DependencyContainerAcceptanceTest.php
@@ -4,21 +4,19 @@
//This is more of a "cross your fingers and hope it works" test!
-class Swift_DependencyContainerAcceptanceTest extends \PHPUnit_Framework_TestCase
+class Swift_DependencyContainerAcceptanceTest extends PHPUnit\Framework\TestCase
{
public function testNoLookupsFail()
{
$di = Swift_DependencyContainer::getInstance();
foreach ($di->listItems() as $itemName) {
try {
- // to be removed in 6.0
- if ('transport.mail' === $itemName) {
- continue;
- }
$di->lookup($itemName);
} catch (Swift_DependencyException $e) {
$this->fail($e->getMessage());
}
}
+ // previous loop would fail if there is an issue
+ $this->addToAssertionCount(1);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EmbeddedFileAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EmbeddedFileAcceptanceTest.php
index fc5a814..a172e97 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EmbeddedFileAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EmbeddedFileAcceptanceTest.php
@@ -5,8 +5,8 @@
class Swift_EmbeddedFileAcceptanceTest extends Swift_Mime_EmbeddedFileAcceptanceTest
{
- protected function _createEmbeddedFile()
+ protected function createEmbeddedFile()
{
- return Swift_EmbeddedFile::newInstance();
+ return new Swift_EmbeddedFile();
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Base64EncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Base64EncoderAcceptanceTest.php
index bada509..f7098c1 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Base64EncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Base64EncoderAcceptanceTest.php
@@ -1,35 +1,35 @@
_samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
- $this->_encoder = new Swift_Encoder_Base64Encoder();
+ $this->samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
+ $this->encoder = new Swift_Encoder_Base64Encoder();
}
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
$text = file_get_contents($sampleDir.'/'.$sampleFile);
- $encodedText = $this->_encoder->encodeString($text);
+ $encodedText = $this->encoder->encodeString($text);
$this->assertEquals(
base64_decode($encodedText), $text,
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/QpEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/QpEncoderAcceptanceTest.php
index 442d9a9..deea362 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/QpEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/QpEncoderAcceptanceTest.php
@@ -1,35 +1,35 @@
_samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
- $this->_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
+ $this->samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
+ $this->factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
}
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
$encoding = $encodingDir;
- $charStream = new Swift_CharacterStream_ArrayCharacterStream(
- $this->_factory, $encoding);
+ $charStream = new Swift_CharacterStream_CharacterStream(
+ $this->factory, $encoding);
$encoder = new Swift_Encoder_QpEncoder($charStream);
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Rfc2231EncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Rfc2231EncoderAcceptanceTest.php
index bcb6b95..e28cc93 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Rfc2231EncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Encoder/Rfc2231EncoderAcceptanceTest.php
@@ -1,35 +1,35 @@
_samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
- $this->_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
+ $this->samplesDir = realpath(__DIR__.'/../../../_samples/charsets');
+ $this->factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
}
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
$encoding = $encodingDir;
- $charStream = new Swift_CharacterStream_ArrayCharacterStream(
- $this->_factory, $encoding);
+ $charStream = new Swift_CharacterStream_CharacterStream(
+ $this->factory, $encoding);
$encoder = new Swift_Encoder_Rfc2231Encoder($charStream);
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EncodingAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EncodingAcceptanceTest.php
deleted file mode 100644
index 6a4d05d..0000000
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/EncodingAcceptanceTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-assertEquals('7bit', $encoder->getName());
- }
-
- public function testGet8BitEncodingReturns8BitEncoder()
- {
- $encoder = Swift_Encoding::get8BitEncoding();
- $this->assertEquals('8bit', $encoder->getName());
- }
-
- public function testGetQpEncodingReturnsQpEncoder()
- {
- $encoder = Swift_Encoding::getQpEncoding();
- $this->assertEquals('quoted-printable', $encoder->getName());
- }
-
- public function testGetBase64EncodingReturnsBase64Encoder()
- {
- $encoder = Swift_Encoding::getBase64Encoding();
- $this->assertEquals('base64', $encoder->getName());
- }
-}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/ArrayKeyCacheAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/ArrayKeyCacheAcceptanceTest.php
index 5fab14c..c54986b 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/ArrayKeyCacheAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/ArrayKeyCacheAcceptanceTest.php
@@ -1,79 +1,79 @@
_cache = new Swift_KeyCache_ArrayKeyCache(
+ $this->cache = new Swift_KeyCache_ArrayKeyCache(
new Swift_KeyCache_SimpleKeyCacheInputStream()
);
}
public function testStringDataCanBeSetAndFetched()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeOverwritten()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('whatever', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('whatever', $this->cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeAppended()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
+ $this->cache->setString(
+ $this->key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testing', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testing', $this->cache->getString($this->key1, 'foo'));
}
public function testHasKeyReturnValue()
{
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyIsWellPartitioned()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $this->_cache->getString($this->_key2, 'foo'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $this->cache->getString($this->key2, 'foo'));
}
public function testItemKeyIsWellPartitioned()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $this->_cache->getString($this->_key1, 'bar'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $this->cache->getString($this->key1, 'bar'));
}
public function testByteStreamCanBeImported()
@@ -81,10 +81,10 @@ public function testByteStreamCanBeImported()
$os = new Swift_ByteStream_ArrayByteStream();
$os->write('abcdef');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('abcdef', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdef', $this->cache->getString($this->key1, 'foo'));
}
public function testByteStreamCanBeAppended()
@@ -95,40 +95,40 @@ public function testByteStreamCanBeAppended()
$os2 = new Swift_ByteStream_ArrayByteStream();
$os2->write('xyzuvw');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
);
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('abcdefxyzuvw', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdefxyzuvw', $this->cache->getString($this->key1, 'foo'));
}
public function testByteStreamAndStringCanBeAppended()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
);
$os = new Swift_ByteStream_ArrayByteStream();
$os->write('abcdef');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testabcdef', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testabcdef', $this->cache->getString($this->key1, 'foo'));
}
public function testDataCanBeExportedToByteStream()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$is = new Swift_ByteStream_ArrayByteStream();
- $this->_cache->exportToByteStream($this->_key1, 'foo', $is);
+ $this->cache->exportToByteStream($this->key1, 'foo', $is);
$string = '';
while (false !== $bytes = $is->read(8192)) {
@@ -140,34 +140,34 @@ public function testDataCanBeExportedToByteStream()
public function testKeyCanBeCleared()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
- $this->_cache->clearKey($this->_key1, 'foo');
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
+ $this->cache->clearKey($this->key1, 'foo');
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyCanBeCleared()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'bar'));
- $this->_cache->clearAll($this->_key1);
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'bar'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'bar'));
+ $this->cache->clearAll($this->key1);
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
+ $this->assertFalse($this->cache->hasKey($this->key1, 'bar'));
}
public function testKeyCacheInputStream()
{
- $is = $this->_cache->getInputByteStream($this->_key1, 'foo');
+ $is = $this->cache->getInputByteStream($this->key1, 'foo');
$is->write('abc');
$is->write('xyz');
- $this->assertEquals('abcxyz', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcxyz', $this->cache->getString($this->key1, 'foo'));
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/DiskKeyCacheAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/DiskKeyCacheAcceptanceTest.php
index 0e027c2..9764742 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/DiskKeyCacheAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/KeyCache/DiskKeyCacheAcceptanceTest.php
@@ -1,79 +1,79 @@
_key1 = uniqid(microtime(true), true);
- $this->_key2 = uniqid(microtime(true), true);
- $this->_cache = new Swift_KeyCache_DiskKeyCache(new Swift_KeyCache_SimpleKeyCacheInputStream(), sys_get_temp_dir());
+ $this->key1 = uniqid(microtime(true), true);
+ $this->key2 = uniqid(microtime(true), true);
+ $this->cache = new Swift_KeyCache_DiskKeyCache(new Swift_KeyCache_SimpleKeyCacheInputStream(), sys_get_temp_dir());
}
public function testStringDataCanBeSetAndFetched()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeOverwritten()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('whatever', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('whatever', $this->cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeAppended()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
+ $this->cache->setString(
+ $this->key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testing', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testing', $this->cache->getString($this->key1, 'foo'));
}
public function testHasKeyReturnValue()
{
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyIsWellPartitioned()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $this->_cache->getString($this->_key2, 'foo'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $this->cache->getString($this->key2, 'foo'));
}
public function testItemKeyIsWellPartitioned()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $this->_cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $this->_cache->getString($this->_key1, 'bar'));
+ $this->assertEquals('test', $this->cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $this->cache->getString($this->key1, 'bar'));
}
public function testByteStreamCanBeImported()
@@ -81,10 +81,10 @@ public function testByteStreamCanBeImported()
$os = new Swift_ByteStream_ArrayByteStream();
$os->write('abcdef');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('abcdef', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdef', $this->cache->getString($this->key1, 'foo'));
}
public function testByteStreamCanBeAppended()
@@ -95,40 +95,40 @@ public function testByteStreamCanBeAppended()
$os2 = new Swift_ByteStream_ArrayByteStream();
$os2->write('xyzuvw');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
);
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('abcdefxyzuvw', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdefxyzuvw', $this->cache->getString($this->key1, 'foo'));
}
public function testByteStreamAndStringCanBeAppended()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
);
$os = new Swift_ByteStream_ArrayByteStream();
$os->write('abcdef');
- $this->_cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
+ $this->cache->importFromByteStream(
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testabcdef', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testabcdef', $this->cache->getString($this->key1, 'foo'));
}
public function testDataCanBeExportedToByteStream()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$is = new Swift_ByteStream_ArrayByteStream();
- $this->_cache->exportToByteStream($this->_key1, 'foo', $is);
+ $this->cache->exportToByteStream($this->key1, 'foo', $is);
$string = '';
while (false !== $bytes = $is->read(8192)) {
@@ -140,34 +140,34 @@ public function testDataCanBeExportedToByteStream()
public function testKeyCanBeCleared()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
- $this->_cache->clearKey($this->_key1, 'foo');
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
+ $this->cache->clearKey($this->key1, 'foo');
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyCanBeCleared()
{
- $this->_cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->_cache->setString(
- $this->_key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
+ $this->cache->setString(
+ $this->key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'foo'));
- $this->assertTrue($this->_cache->hasKey($this->_key1, 'bar'));
- $this->_cache->clearAll($this->_key1);
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'foo'));
- $this->assertFalse($this->_cache->hasKey($this->_key1, 'bar'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'foo'));
+ $this->assertTrue($this->cache->hasKey($this->key1, 'bar'));
+ $this->cache->clearAll($this->key1);
+ $this->assertFalse($this->cache->hasKey($this->key1, 'foo'));
+ $this->assertFalse($this->cache->hasKey($this->key1, 'bar'));
}
public function testKeyCacheInputStream()
{
- $is = $this->_cache->getInputByteStream($this->_key1, 'foo');
+ $is = $this->cache->getInputByteStream($this->key1, 'foo');
$is->write('abc');
$is->write('xyz');
- $this->assertEquals('abcxyz', $this->_cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcxyz', $this->cache->getString($this->key1, 'foo'));
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MessageAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MessageAcceptanceTest.php
index 5f4e983..16adb23 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MessageAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MessageAcceptanceTest.php
@@ -7,10 +7,10 @@ class Swift_MessageAcceptanceTest extends Swift_Mime_SimpleMessageAcceptanceTest
{
public function testAddPartWrapper()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
$date = $message->getDate();
@@ -21,7 +21,7 @@ public function testAddPartWrapper()
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -45,11 +45,11 @@ public function testAddPartWrapper()
);
}
- protected function _createMessage()
+ protected function createMessage()
{
Swift_DependencyContainer::getInstance()
->register('properties.charset')->asValue(null);
- return Swift_Message::newInstance();
+ return new Swift_Message();
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/AttachmentAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/AttachmentAcceptanceTest.php
index 7353d9d..e931dda 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/AttachmentAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/AttachmentAcceptanceTest.php
@@ -1,35 +1,38 @@
_cache = new Swift_KeyCache_ArrayKeyCache(
+ $this->cache = new Swift_KeyCache_ArrayKeyCache(
new Swift_KeyCache_SimpleKeyCacheInputStream()
);
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
- $this->_contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
+ $this->contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
$headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
$paramEncoder = new Swift_Encoder_Rfc2231Encoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
- $this->_grammar = new Swift_Mime_Grammar();
- $this->_headers = new Swift_Mime_SimpleHeaderSet(
- new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->_grammar)
+ $this->emailValidator = new EmailValidator();
+ $this->idGenerator = new Swift_Mime_IdGenerator('example.com');
+ $this->headers = new Swift_Mime_SimpleHeaderSet(
+ new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->emailValidator)
);
}
public function testDispositionIsSetInHeader()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setDisposition('inline');
$this->assertEquals(
@@ -42,7 +45,7 @@ public function testDispositionIsSetInHeader()
public function testDispositionIsAttachmentByDefault()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$this->assertEquals(
'Content-Type: application/pdf'."\r\n".
@@ -54,7 +57,7 @@ public function testDispositionIsAttachmentByDefault()
public function testFilenameIsSetInHeader()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$this->assertEquals(
@@ -67,7 +70,7 @@ public function testFilenameIsSetInHeader()
public function testSizeIsSetInHeader()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setSize(12340);
$this->assertEquals(
@@ -80,7 +83,7 @@ public function testSizeIsSetInHeader()
public function testMultipleParametersInHeader()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setSize(12340);
@@ -94,7 +97,7 @@ public function testMultipleParametersInHeader()
public function testEndToEnd()
{
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setSize(12340);
@@ -109,13 +112,13 @@ public function testEndToEnd()
);
}
- protected function _createAttachment()
+ protected function createAttachment()
{
$entity = new Swift_Mime_Attachment(
- $this->_headers,
- $this->_contentEncoder,
- $this->_cache,
- $this->_grammar
+ $this->headers,
+ $this->contentEncoder,
+ $this->cache,
+ $this->idGenerator
);
return $entity;
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/Base64ContentEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/Base64ContentEncoderAcceptanceTest.php
index a72f5ff..a87b30e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/Base64ContentEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/Base64ContentEncoderAcceptanceTest.php
@@ -1,30 +1,30 @@
_samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
- $this->_encoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
+ $this->samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
+ $this->encoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
}
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
@@ -35,7 +35,7 @@ public function testEncodingAndDecodingSamples()
$is = new Swift_ByteStream_ArrayByteStream();
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$encoded = '';
while (false !== $bytes = $is->read(8192)) {
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/NativeQpContentEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/NativeQpContentEncoderAcceptanceTest.php
index 0dfc4e2..bf0a04e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/NativeQpContentEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/NativeQpContentEncoderAcceptanceTest.php
@@ -1,34 +1,34 @@
_samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
- $this->_encoder = new Swift_Mime_ContentEncoder_NativeQpContentEncoder();
+ $this->samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
+ $this->encoder = new Swift_Mime_ContentEncoder_NativeQpContentEncoder();
}
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
@@ -38,7 +38,7 @@ public function testEncodingAndDecodingSamples()
$os->write($text);
$is = new Swift_ByteStream_ArrayByteStream();
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$encoded = '';
while (false !== $bytes = $is->read(8192)) {
@@ -60,7 +60,7 @@ public function testEncodingAndDecodingSamples()
public function testEncodingAndDecodingSamplesFromDiConfiguredInstance()
{
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertSame('=C3=A4=C3=B6=C3=BC=C3=9F', $encoder->encodeString('äöüß'));
}
@@ -69,17 +69,17 @@ public function testEncodingAndDecodingSamplesFromDiConfiguredInstance()
*/
public function testCharsetChangeNotImplemented()
{
- $this->_encoder->charsetChanged('utf-8');
- $this->_encoder->charsetChanged('charset');
- $this->_encoder->encodeString('foo');
+ $this->encoder->charsetChanged('utf-8');
+ $this->encoder->charsetChanged('charset');
+ $this->encoder->encodeString('foo');
}
public function testGetName()
{
- $this->assertSame('quoted-printable', $this->_encoder->getName());
+ $this->assertSame('quoted-printable', $this->encoder->getName());
}
- private function _createEncoderFromContainer()
+ private function createEncoderFromContainer()
{
return Swift_DependencyContainer::getInstance()
->lookup('mime.nativeqpcontentencoder')
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/PlainContentEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/PlainContentEncoderAcceptanceTest.php
index 5eff4e2..544873a 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/PlainContentEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/PlainContentEncoderAcceptanceTest.php
@@ -1,35 +1,35 @@
_samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
- $this->_encoder = new Swift_Mime_ContentEncoder_PlainContentEncoder('8bit');
+ $this->samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
+ $this->encoder = new Swift_Mime_ContentEncoder_PlainContentEncoder('8bit');
}
public function testEncodingAndDecodingSamplesString()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
$text = file_get_contents($sampleDir.'/'.$sampleFile);
- $encodedText = $this->_encoder->encodeString($text);
+ $encodedText = $this->encoder->encodeString($text);
$this->assertEquals(
$encodedText, $text,
@@ -45,18 +45,18 @@ public function testEncodingAndDecodingSamplesString()
public function testEncodingAndDecodingSamplesByteStream()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
@@ -67,7 +67,7 @@ public function testEncodingAndDecodingSamplesByteStream()
$is = new Swift_ByteStream_ArrayByteStream();
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$encoded = '';
while (false !== $bytes = $is->read(8192)) {
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/QpContentEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/QpContentEncoderAcceptanceTest.php
index a383b58..a4a6395 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/QpContentEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/ContentEncoder/QpContentEncoderAcceptanceTest.php
@@ -1,14 +1,14 @@
_samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
- $this->_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
+ $this->samplesDir = realpath(__DIR__.'/../../../../_samples/charsets');
+ $this->factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
}
protected function tearDown()
@@ -18,23 +18,23 @@ protected function tearDown()
public function testEncodingAndDecodingSamples()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
$encoding = $encodingDir;
- $charStream = new Swift_CharacterStream_NgCharacterStream(
- $this->_factory, $encoding);
+ $charStream = new Swift_CharacterStream_CharacterStream(
+ $this->factory, $encoding);
$encoder = new Swift_Mime_ContentEncoder_QpContentEncoder($charStream);
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
@@ -65,21 +65,21 @@ public function testEncodingAndDecodingSamples()
public function testEncodingAndDecodingSamplesFromDiConfiguredInstance()
{
- $sampleFp = opendir($this->_samplesDir);
+ $sampleFp = opendir($this->samplesDir);
while (false !== $encodingDir = readdir($sampleFp)) {
- if (substr($encodingDir, 0, 1) == '.') {
+ if ('.' == substr($encodingDir, 0, 1)) {
continue;
}
$encoding = $encodingDir;
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
- $sampleDir = $this->_samplesDir.'/'.$encodingDir;
+ $sampleDir = $this->samplesDir.'/'.$encodingDir;
if (is_dir($sampleDir)) {
$fileFp = opendir($sampleDir);
while (false !== $sampleFile = readdir($fileFp)) {
- if (substr($sampleFile, 0, 1) == '.') {
+ if ('.' == substr($sampleFile, 0, 1)) {
continue;
}
@@ -110,25 +110,25 @@ public function testEncodingAndDecodingSamplesFromDiConfiguredInstance()
public function testEncodingLFTextWithDiConfiguredInstance()
{
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\nb\nc"));
}
public function testEncodingCRTextWithDiConfiguredInstance()
{
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\rb\rc"));
}
public function testEncodingLFCRTextWithDiConfiguredInstance()
{
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a\r\n\r\nb\r\n\r\nc", $encoder->encodeString("a\n\rb\n\rc"));
}
public function testEncodingCRLFTextWithDiConfiguredInstance()
{
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\r\nb\r\nc"));
}
@@ -136,11 +136,11 @@ public function testEncodingDotStuffingWithDiConfiguredInstance()
{
// Enable DotEscaping
Swift_Preferences::getInstance()->setQPDotEscape(true);
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a=2E\r\n=2E\r\n=2Eb\r\nc", $encoder->encodeString("a.\r\n.\r\n.b\r\nc"));
// Return to default
Swift_Preferences::getInstance()->setQPDotEscape(false);
- $encoder = $this->_createEncoderFromContainer();
+ $encoder = $this->createEncoderFromContainer();
$this->assertEquals("a.\r\n.\r\n.b\r\nc", $encoder->encodeString("a.\r\n.\r\n.b\r\nc"));
}
@@ -151,7 +151,7 @@ public function testDotStuffingEncodingAndDecodingSamplesFromDiConfiguredInstanc
$this->testEncodingAndDecodingSamplesFromDiConfiguredInstance();
}
- private function _createEncoderFromContainer()
+ private function createEncoderFromContainer()
{
return Swift_DependencyContainer::getInstance()
->lookup('mime.qpcontentencoder')
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/EmbeddedFileAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/EmbeddedFileAcceptanceTest.php
index 0f7aa72..dbe5592 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/EmbeddedFileAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/EmbeddedFileAcceptanceTest.php
@@ -1,35 +1,38 @@
_cache = new Swift_KeyCache_ArrayKeyCache(
+ $this->cache = new Swift_KeyCache_ArrayKeyCache(
new Swift_KeyCache_SimpleKeyCacheInputStream()
);
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
- $this->_contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
+ $this->contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
$headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
$paramEncoder = new Swift_Encoder_Rfc2231Encoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
- $this->_grammar = new Swift_Mime_Grammar();
- $this->_headers = new Swift_Mime_SimpleHeaderSet(
- new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->_grammar)
+ $this->emailValidator = new EmailValidator();
+ $this->idGenerator = new Swift_Mime_IdGenerator('example.com');
+ $this->headers = new Swift_Mime_SimpleHeaderSet(
+ new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->emailValidator)
);
}
public function testContentIdIsSetInHeader()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$file->setContentType('application/pdf');
$file->setId('foo@bar');
$this->assertEquals(
@@ -43,7 +46,7 @@ public function testContentIdIsSetInHeader()
public function testDispositionIsSetInHeader()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setDisposition('attachment');
@@ -58,7 +61,7 @@ public function testDispositionIsSetInHeader()
public function testFilenameIsSetInHeader()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
@@ -73,7 +76,7 @@ public function testFilenameIsSetInHeader()
public function testSizeIsSetInHeader()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setSize(12340);
@@ -88,7 +91,7 @@ public function testSizeIsSetInHeader()
public function testMultipleParametersInHeader()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
@@ -105,7 +108,7 @@ public function testMultipleParametersInHeader()
public function testEndToEnd()
{
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
@@ -122,13 +125,13 @@ public function testEndToEnd()
);
}
- protected function _createEmbeddedFile()
+ protected function createEmbeddedFile()
{
$entity = new Swift_Mime_EmbeddedFile(
- $this->_headers,
- $this->_contentEncoder,
- $this->_cache,
- $this->_grammar
+ $this->headers,
+ $this->contentEncoder,
+ $this->cache,
+ $this->idGenerator
);
return $entity;
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/HeaderEncoder/Base64HeaderEncoderAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/HeaderEncoder/Base64HeaderEncoderAcceptanceTest.php
index e3fad6d..1379513 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/HeaderEncoder/Base64HeaderEncoderAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/HeaderEncoder/Base64HeaderEncoderAcceptanceTest.php
@@ -1,12 +1,12 @@
_encoder = new Swift_Mime_HeaderEncoder_Base64HeaderEncoder();
+ $this->encoder = new Swift_Mime_HeaderEncoder_Base64HeaderEncoder();
}
public function testEncodingJIS()
@@ -15,14 +15,14 @@ public function testEncodingJIS()
// base64_encode and split cannot handle long JIS text to fold
$subject = '長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い件名';
- $encodedWrapperLength = strlen('=?iso-2022-jp?'.$this->_encoder->getName().'??=');
+ $encodedWrapperLength = strlen('=?iso-2022-jp?'.$this->encoder->getName().'??=');
$old = mb_internal_encoding();
mb_internal_encoding('utf-8');
$newstring = mb_encode_mimeheader($subject, 'iso-2022-jp', 'B', "\r\n");
mb_internal_encoding($old);
- $encoded = $this->_encoder->encodeString($subject, 0, 75 - $encodedWrapperLength, 'iso-2022-jp');
+ $encoded = $this->encoder->encodeString($subject, 0, 75 - $encodedWrapperLength, 'iso-2022-jp');
$this->assertEquals(
$encoded, $newstring,
'Encoded string should decode back to original string for sample '
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/MimePartAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/MimePartAcceptanceTest.php
index a7f6fc5..ec3ad72 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/MimePartAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/MimePartAcceptanceTest.php
@@ -1,41 +1,44 @@
_cache = new Swift_KeyCache_ArrayKeyCache(
+ $this->cache = new Swift_KeyCache_ArrayKeyCache(
new Swift_KeyCache_SimpleKeyCacheInputStream()
);
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
- $this->_contentEncoder = new Swift_Mime_ContentEncoder_QpContentEncoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'),
+ $this->contentEncoder = new Swift_Mime_ContentEncoder_QpContentEncoder(
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8'),
new Swift_StreamFilters_ByteArrayReplacementFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
)
);
$headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
$paramEncoder = new Swift_Encoder_Rfc2231Encoder(
- new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
+ new Swift_CharacterStream_CharacterStream($factory, 'utf-8')
);
- $this->_grammar = new Swift_Mime_Grammar();
- $this->_headers = new Swift_Mime_SimpleHeaderSet(
- new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->_grammar)
+ $this->emailValidator = new EmailValidator();
+ $this->idGenerator = new Swift_Mime_IdGenerator('example.com');
+ $this->headers = new Swift_Mime_SimpleHeaderSet(
+ new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->emailValidator)
);
}
public function testCharsetIsSetInHeader()
{
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('utf-8');
$part->setBody('foobar');
@@ -50,7 +53,7 @@ public function testCharsetIsSetInHeader()
public function testFormatIsSetInHeaders()
{
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setFormat('flowed');
$part->setBody('> foobar');
@@ -65,7 +68,7 @@ public function testFormatIsSetInHeaders()
public function testDelSpIsSetInHeaders()
{
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setDelSp(true);
$part->setBody('foobar');
@@ -80,7 +83,7 @@ public function testDelSpIsSetInHeaders()
public function testAll3ParamsInHeaders()
{
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('utf-8');
$part->setFormat('fixed');
@@ -97,7 +100,7 @@ public function testAll3ParamsInHeaders()
public function testBodyIsCanonicalized()
{
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('utf-8');
$part->setBody("foobar\r\rtest\ning\r");
@@ -113,14 +116,14 @@ public function testBodyIsCanonicalized()
);
}
- protected function _createMimePart()
+ protected function createMimePart()
{
$entity = new Swift_Mime_MimePart(
- $this->_headers,
- $this->_contentEncoder,
- $this->_cache,
- $this->_grammar
- );
+ $this->headers,
+ $this->contentEncoder,
+ $this->cache,
+ $this->idGenerator
+ );
return $entity;
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/SimpleMessageAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/SimpleMessageAcceptanceTest.php
index 912768e..1d981e7 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/SimpleMessageAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Mime/SimpleMessageAcceptanceTest.php
@@ -1,6 +1,6 @@
_createMessage();
+ $message = $this->createMessage();
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
'Content-Type: text/plain'."\r\n".
@@ -29,13 +29,13 @@ public function testBasicHeaders()
public function testSubjectIsDisplayedIfSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -47,13 +47,14 @@ public function testSubjectIsDisplayedIfSet()
public function testDateCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$id = $message->getId();
- $message->setDate(1234);
+ $date = new DateTimeImmutable();
+ $message->setDate($date);
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', 1234)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -65,13 +66,13 @@ public function testDateCanBeSet()
public function testMessageIdCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setId('foo@bar');
$date = $message->getDate();
$this->assertEquals(
'Message-ID: '."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -83,14 +84,14 @@ public function testMessageIdCanBeSet()
public function testContentTypeCanBeChanged()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setContentType('text/html');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -102,7 +103,7 @@ public function testContentTypeCanBeChanged()
public function testCharsetCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setContentType('text/html');
$message->setCharset('iso-8859-1');
@@ -110,7 +111,7 @@ public function testCharsetCanBeSet()
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -122,14 +123,14 @@ public function testCharsetCanBeSet()
public function testFormatCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setFormat('flowed');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -141,7 +142,7 @@ public function testFormatCanBeSet()
public function testEncoderCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setContentType('text/html');
$message->setEncoder(
@@ -151,7 +152,7 @@ public function testEncoderCanBeSet()
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -163,14 +164,14 @@ public function testEncoderCanBeSet()
public function testFromAddressCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setFrom('chris.corbyn@swiftmailer.org');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: chris.corbyn@swiftmailer.org'."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -182,14 +183,14 @@ public function testFromAddressCanBeSet()
public function testFromAddressCanBeSetWithName()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris Corbyn'));
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris Corbyn']);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -201,17 +202,17 @@ public function testFromAddressCanBeSetWithName()
public function testMultipleFromAddressesCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array(
+ $message->setFrom([
'chris.corbyn@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org',
- ));
+ ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn , mark@swiftmailer.org'."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -223,17 +224,17 @@ public function testMultipleFromAddressesCanBeSet()
public function testReturnPathAddressCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -245,17 +246,17 @@ public function testReturnPathAddressCanBeSet()
public function testEmptyReturnPathHeaderCanBeUsed()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Return-Path: <>'."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -267,7 +268,7 @@ public function testEmptyReturnPathHeaderCanBeUsed()
public function testSenderCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
$message->setSender('chris.corbyn@swiftmailer.org');
$id = $message->getId();
@@ -275,7 +276,7 @@ public function testSenderCanBeSet()
$this->assertEquals(
'Sender: chris.corbyn@swiftmailer.org'."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -287,15 +288,15 @@ public function testSenderCanBeSet()
public function testSenderCanBeSetWithName()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setSender(array('chris.corbyn@swiftmailer.org' => 'Chris'));
+ $message->setSender(['chris.corbyn@swiftmailer.org' => 'Chris']);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Sender: Chris '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -307,15 +308,15 @@ public function testSenderCanBeSetWithName()
public function testReplyToCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array('chris@w3style.co.uk' => 'Myself'));
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo(['chris@w3style.co.uk' => 'Myself']);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself '."\r\n".
@@ -328,18 +329,18 @@ public function testReplyToCanBeSet()
public function testMultipleReplyAddressCanBeUsed()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
+ ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -352,19 +353,19 @@ public function testMultipleReplyAddressCanBeUsed()
public function testToAddressCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
+ ]);
$message->setTo('mark@swiftmailer.org');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -378,21 +379,21 @@ public function testToAddressCanBeSet()
public function testMultipleToAddressesCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
- $message->setTo(array(
+ ]);
+ $message->setTo([
'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
+ ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -406,22 +407,22 @@ public function testMultipleToAddressesCanBeSet()
public function testCcAddressCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
- $message->setTo(array(
+ ]);
+ $message->setTo([
'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
+ ]);
$message->setCc('john@some-site.com');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -436,25 +437,25 @@ public function testCcAddressCanBeSet()
public function testMultipleCcAddressesCanBeSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
- $message->setTo(array(
+ ]);
+ $message->setTo([
'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
- $message->setCc(array(
+ ]);
+ $message->setCc([
'john@some-site.com' => 'John West',
'fred@another-site.co.uk' => 'Big Fred',
- ));
+ ]);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -471,26 +472,26 @@ public function testBccAddressCanBeSet()
{
//Obviously Transports need to setBcc(array()) and send to each Bcc recipient
// separately in accordance with RFC 2822/2821
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
- $message->setTo(array(
+ ]);
+ $message->setTo([
'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
- $message->setCc(array(
+ ]);
+ $message->setCc([
'john@some-site.com' => 'John West',
'fred@another-site.co.uk' => 'Big Fred',
- ));
+ ]);
$message->setBcc('x@alphabet.tld');
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -508,26 +509,26 @@ public function testMultipleBccAddressesCanBeSet()
{
//Obviously Transports need to setBcc(array()) and send to each Bcc recipient
// separately in accordance with RFC 2822/2821
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setSubject('just a test subject');
- $message->setFrom(array('chris.corbyn@swiftmailer.org' => 'Chris'));
- $message->setReplyTo(array(
+ $message->setFrom(['chris.corbyn@swiftmailer.org' => 'Chris']);
+ $message->setReplyTo([
'chris@w3style.co.uk' => 'Myself',
'my.other@address.com' => 'Me',
- ));
- $message->setTo(array(
+ ]);
+ $message->setTo([
'mark@swiftmailer.org', 'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
- $message->setCc(array(
+ ]);
+ $message->setCc([
'john@some-site.com' => 'John West',
'fred@another-site.co.uk' => 'Big Fred',
- ));
- $message->setBcc(array('x@alphabet.tld', 'a@alphabet.tld' => 'A'));
+ ]);
+ $message->setBcc(['x@alphabet.tld', 'a@alphabet.tld' => 'A']);
$id = $message->getId();
$date = $message->getDate();
$this->assertEquals(
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris '."\r\n".
'Reply-To: Myself , Me '."\r\n".
@@ -543,11 +544,11 @@ public function testMultipleBccAddressesCanBeSet()
public function testStringBodyIsAppended()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setBody(
'just a test body'."\r\n".
'with a new line'
@@ -557,7 +558,7 @@ public function testStringBodyIsAppended()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -572,11 +573,11 @@ public function testStringBodyIsAppended()
public function testStringBodyIsEncoded()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setBody(
'Just s'.pack('C*', 0xC2, 0x01, 0x01).'me multi-'."\r\n".
'line message!'
@@ -586,7 +587,7 @@ public function testStringBodyIsEncoded()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -601,24 +602,24 @@ public function testStringBodyIsEncoded()
public function testChildrenCanBeAttached()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
$date = $message->getDate();
$boundary = $message->getBoundary();
- $part1 = $this->_createMimePart();
+ $part1 = $this->createMimePart();
$part1->setContentType('text/plain');
$part1->setCharset('iso-8859-1');
$part1->setBody('foo');
$message->attach($part1);
- $part2 = $this->_createMimePart();
+ $part2 = $this->createMimePart();
$part2->setContentType('text/html');
$part2->setCharset('iso-8859-1');
$part2->setBody('test foo');
@@ -628,7 +629,7 @@ public function testChildrenCanBeAttached()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -654,24 +655,24 @@ public function testChildrenCanBeAttached()
public function testAttachmentsBeingAttached()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('iso-8859-1');
$part->setBody('foo');
$message->attach($part);
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setBody('');
@@ -716,31 +717,31 @@ public function testAttachmentsBeingAttached()
public function testAttachmentsAndEmbeddedFilesBeingAttached()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('iso-8859-1');
$part->setBody('foo');
$message->attach($part);
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setBody('');
$message->attach($attachment);
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$file->setContentType('image/jpeg');
$file->setFilename('myimage.jpg');
$file->setBody('');
@@ -802,29 +803,29 @@ public function testAttachmentsAndEmbeddedFilesBeingAttached()
public function testComplexEmbeddingOfContent()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setBody('');
$message->attach($attachment);
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$file->setContentType('image/jpeg');
$file->setFilename('myimage.jpg');
$file->setBody('');
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/html');
$part->setCharset('iso-8859-1');
$part->setBody('foo ');
@@ -879,31 +880,31 @@ public function testComplexEmbeddingOfContent()
public function testAttachingAndDetachingContent()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
- $part = $this->_createMimePart();
+ $part = $this->createMimePart();
$part->setContentType('text/plain');
$part->setCharset('iso-8859-1');
$part->setBody('foo');
$message->attach($part);
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setBody('');
$message->attach($attachment);
- $file = $this->_createEmbeddedFile();
+ $file = $this->createEmbeddedFile();
$file->setContentType('image/jpeg');
$file->setFilename('myimage.jpg');
$file->setBody('');
@@ -954,24 +955,24 @@ public function testAttachingAndDetachingContent()
public function testBoundaryDoesNotAppearAfterAllPartsAreDetached()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
$date = $message->getDate();
$boundary = $message->getBoundary();
- $part1 = $this->_createMimePart();
+ $part1 = $this->createMimePart();
$part1->setContentType('text/plain');
$part1->setCharset('iso-8859-1');
$part1->setBody('foo');
$message->attach($part1);
- $part2 = $this->_createMimePart();
+ $part2 = $this->createMimePart();
$part2->setContentType('text/html');
$part2->setCharset('iso-8859-1');
$part2->setBody('test foo');
@@ -984,7 +985,7 @@ public function testBoundaryDoesNotAppearAfterAllPartsAreDetached()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -997,11 +998,11 @@ public function testBoundaryDoesNotAppearAfterAllPartsAreDetached()
public function testCharsetFormatOrDelSpAreNotShownWhenBoundaryIsSet()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setCharset('utf-8');
$message->setFormat('flowed');
$message->setDelSp(true);
@@ -1010,14 +1011,14 @@ public function testCharsetFormatOrDelSpAreNotShownWhenBoundaryIsSet()
$date = $message->getDate();
$boundary = $message->getBoundary();
- $part1 = $this->_createMimePart();
+ $part1 = $this->createMimePart();
$part1->setContentType('text/plain');
$part1->setCharset('iso-8859-1');
$part1->setBody('foo');
$message->attach($part1);
- $part2 = $this->_createMimePart();
+ $part2 = $this->createMimePart();
$part2->setContentType('text/html');
$part2->setCharset('iso-8859-1');
$part2->setBody('test foo');
@@ -1027,7 +1028,7 @@ public function testCharsetFormatOrDelSpAreNotShownWhenBoundaryIsSet()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -1053,20 +1054,20 @@ public function testCharsetFormatOrDelSpAreNotShownWhenBoundaryIsSet()
public function testBodyCanBeSetWithAttachments()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setContentType('text/html');
$message->setCharset('iso-8859-1');
$message->setBody('foo');
$id = $message->getId();
- $date = date('r', $message->getDate());
+ $date = $message->getDate()->format('r');
$boundary = $message->getBoundary();
- $attachment = $this->_createAttachment();
+ $attachment = $this->createAttachment();
$attachment->setContentType('application/pdf');
$attachment->setFilename('foo.pdf');
$attachment->setBody('');
@@ -1103,21 +1104,21 @@ public function testBodyCanBeSetWithAttachments()
public function testHtmlPartAlwaysAppearsLast()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$id = $message->getId();
- $date = date('r', $message->getDate());
+ $date = $message->getDate()->format('r');
$boundary = $message->getBoundary();
- $part1 = $this->_createMimePart();
+ $part1 = $this->createMimePart();
$part1->setContentType('text/html');
$part1->setBody('foo');
- $part2 = $this->_createMimePart();
+ $part2 = $this->createMimePart();
$part2->setContentType('text/plain');
$part2->setBody('bar');
@@ -1153,19 +1154,19 @@ public function testHtmlPartAlwaysAppearsLast()
public function testBodyBecomesPartIfOtherPartsAttached()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setContentType('text/html');
$message->setBody('foo');
$id = $message->getId();
- $date = date('r', $message->getDate());
+ $date = $message->getDate()->format('r');
$boundary = $message->getBoundary();
- $part2 = $this->_createMimePart();
+ $part2 = $this->createMimePart();
$part2->setContentType('text/plain');
$part2->setBody('bar');
@@ -1200,11 +1201,11 @@ public function testBodyBecomesPartIfOtherPartsAttached()
public function testBodyIsCanonicalized()
{
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->setReturnPath('chris@w3style.co.uk');
$message->setSubject('just a test subject');
- $message->setFrom(array(
- 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ));
+ $message->setFrom([
+ 'chris.corbyn@swiftmailer.org' => 'Chris Corbyn', ]);
$message->setBody(
'just a test body'."\n".
'with a new line'
@@ -1214,7 +1215,7 @@ public function testBodyIsCanonicalized()
$this->assertEquals(
'Return-Path: '."\r\n".
'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.date('r', $date)."\r\n".
+ 'Date: '.$date->format('r')."\r\n".
'Subject: just a test subject'."\r\n".
'From: Chris Corbyn '."\r\n".
'MIME-Version: 1.0'."\r\n".
@@ -1227,22 +1228,22 @@ public function testBodyIsCanonicalized()
);
}
- protected function _createMessage()
+ protected function createMessage()
{
return new Swift_Message();
}
- protected function _createMimePart()
+ protected function createMimePart()
{
return new Swift_MimePart();
}
- protected function _createAttachment()
+ protected function createAttachment()
{
return new Swift_Attachment();
}
- protected function _createEmbeddedFile()
+ protected function createEmbeddedFile()
{
return new Swift_EmbeddedFile();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MimePartAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MimePartAcceptanceTest.php
index f42405d..581afc7 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MimePartAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/MimePartAcceptanceTest.php
@@ -5,11 +5,11 @@
class Swift_MimePartAcceptanceTest extends Swift_Mime_MimePartAcceptanceTest
{
- protected function _createMimePart()
+ protected function createMimePart()
{
Swift_DependencyContainer::getInstance()
->register('properties.charset')->asValue(null);
- return Swift_MimePart::newInstance();
+ return new Swift_MimePart();
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/AbstractStreamBufferAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/AbstractStreamBufferAcceptanceTest.php
index 21abc13..9bc09f8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/AbstractStreamBufferAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/AbstractStreamBufferAcceptanceTest.php
@@ -1,10 +1,10 @@
_buffer = new Swift_Transport_StreamBuffer(
+ $this->buffer = new Swift_Transport_StreamBuffer(
$this->getMockBuilder('Swift_ReplacementFilterFactory')->getMock()
);
}
public function testReadLine()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
- $line = $this->_buffer->readLine(0);
+ $line = $this->buffer->readLine(0);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
- $seq = $this->_buffer->write("QUIT\r\n");
+ $seq = $this->buffer->write("QUIT\r\n");
$this->assertTrue((bool) $seq);
- $line = $this->_buffer->readLine($seq);
+ $line = $this->buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
- $this->_buffer->terminate();
+ $this->buffer->terminate();
}
public function testWrite()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
- $line = $this->_buffer->readLine(0);
+ $line = $this->buffer->readLine(0);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
- $seq = $this->_buffer->write("HELO foo\r\n");
+ $seq = $this->buffer->write("HELO foo\r\n");
$this->assertTrue((bool) $seq);
- $line = $this->_buffer->readLine($seq);
+ $line = $this->buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
- $seq = $this->_buffer->write("QUIT\r\n");
+ $seq = $this->buffer->write("QUIT\r\n");
$this->assertTrue((bool) $seq);
- $line = $this->_buffer->readLine($seq);
+ $line = $this->buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
- $this->_buffer->terminate();
+ $this->buffer->terminate();
}
public function testBindingOtherStreamsMirrorsWriteOperations()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->at(0))
->method('write')
@@ -72,37 +72,37 @@ public function testBindingOtherStreamsMirrorsWriteOperations()
->method('write')
->with('y');
- $this->_buffer->bind($is1);
- $this->_buffer->bind($is2);
+ $this->buffer->bind($is1);
+ $this->buffer->bind($is2);
- $this->_buffer->write('x');
- $this->_buffer->write('y');
+ $this->buffer->write('x');
+ $this->buffer->write('y');
}
public function testBindingOtherStreamsMirrorsFlushOperations()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->once())
->method('flushBuffers');
$is2->expects($this->once())
->method('flushBuffers');
- $this->_buffer->bind($is1);
- $this->_buffer->bind($is2);
+ $this->buffer->bind($is1);
+ $this->buffer->bind($is2);
- $this->_buffer->flushBuffers();
+ $this->buffer->flushBuffers();
}
public function testUnbindingStreamPreventsFurtherWrites()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
- $is1 = $this->_createMockInputStream();
- $is2 = $this->_createMockInputStream();
+ $is1 = $this->createMockInputStream();
+ $is2 = $this->createMockInputStream();
$is1->expects($this->at(0))
->method('write')
@@ -114,17 +114,17 @@ public function testUnbindingStreamPreventsFurtherWrites()
->method('write')
->with('x');
- $this->_buffer->bind($is1);
- $this->_buffer->bind($is2);
+ $this->buffer->bind($is1);
+ $this->buffer->bind($is2);
- $this->_buffer->write('x');
+ $this->buffer->write('x');
- $this->_buffer->unbind($is2);
+ $this->buffer->unbind($is2);
- $this->_buffer->write('y');
+ $this->buffer->write('y');
}
- private function _createMockInputStream()
+ private function createMockInputStream()
{
return $this->getMockBuilder('Swift_InputByteStream')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/BasicSocketAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/BasicSocketAcceptanceTest.php
index 4c3c7d3..739a7ec 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/BasicSocketAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/BasicSocketAcceptanceTest.php
@@ -15,19 +15,19 @@ protected function setUp()
parent::setUp();
}
- protected function _initializeBuffer()
+ protected function initializeBuffer()
{
$parts = explode(':', SWIFT_SMTP_HOST);
$host = $parts[0];
- $port = isset($parts[1]) ? $parts[1] : 25;
+ $port = $parts[1] ?? 25;
- $this->_buffer->initialize(array(
+ $this->buffer->initialize([
'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
'host' => $host,
'port' => $port,
'protocol' => 'tcp',
'blocking' => 1,
'timeout' => 15,
- ));
+ ]);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/ProcessAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/ProcessAcceptanceTest.php
index a37439d..34ef3cb 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/ProcessAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/ProcessAcceptanceTest.php
@@ -16,11 +16,11 @@ protected function setUp()
parent::setUp();
}
- protected function _initializeBuffer()
+ protected function initializeBuffer()
{
- $this->_buffer->initialize(array(
+ $this->buffer->initialize([
'type' => Swift_Transport_IoBuffer::TYPE_PROCESS,
'command' => SWIFT_SENDMAIL_PATH.' -bs',
- ));
+ ]);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SocketTimeoutTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SocketTimeoutTest.php
index 59362b0..67073f8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SocketTimeoutTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SocketTimeoutTest.php
@@ -1,12 +1,10 @@
_randomHighPort = rand(50000, 65000);
- $this->_server = stream_socket_server('tcp://127.0.0.1:'.$this->_randomHighPort);
- if ($this->_server) {
+ $this->randomHighPort = random_int(50000, 65000);
+ $this->server = stream_socket_server('tcp://127.0.0.1:'.$this->randomHighPort);
+ if ($this->server) {
$serverStarted = true;
}
}
- $this->_buffer = new Swift_Transport_StreamBuffer(
+ $this->buffer = new Swift_Transport_StreamBuffer(
$this->getMockBuilder('Swift_ReplacementFilterFactory')->getMock()
);
}
- protected function _initializeBuffer()
+ protected function initializeBuffer()
{
$host = '127.0.0.1';
- $port = $this->_randomHighPort;
+ $port = $this->randomHighPort;
- $this->_buffer->initialize(array(
+ $this->buffer->initialize([
'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
'host' => $host,
'port' => $port,
'protocol' => 'tcp',
'blocking' => 1,
'timeout' => 1,
- ));
+ ]);
}
public function testTimeoutException()
{
- $this->_initializeBuffer();
+ $this->initializeBuffer();
$e = null;
try {
- $line = $this->_buffer->readLine(0);
+ $line = $this->buffer->readLine(0);
} catch (Exception $e) {
}
$this->assertInstanceOf('Swift_IoException', $e, 'IO Exception Not Thrown On Connection Timeout');
@@ -60,8 +58,8 @@ public function testTimeoutException()
protected function tearDown()
{
- if ($this->_server) {
- stream_socket_shutdown($this->_server, STREAM_SHUT_RDWR);
+ if ($this->server) {
+ stream_socket_shutdown($this->server, STREAM_SHUT_RDWR);
}
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SslSocketAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SslSocketAcceptanceTest.php
index 32e0fe8..e3bee2c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SslSocketAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/SslSocketAcceptanceTest.php
@@ -22,19 +22,19 @@ protected function setUp()
parent::setUp();
}
- protected function _initializeBuffer()
+ protected function initializeBuffer()
{
$parts = explode(':', SWIFT_SSL_HOST);
$host = $parts[0];
- $port = isset($parts[1]) ? $parts[1] : 25;
+ $port = $parts[1] ?? 25;
- $this->_buffer->initialize(array(
+ $this->buffer->initialize([
'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
'host' => $host,
'port' => $port,
'protocol' => 'ssl',
'blocking' => 1,
'timeout' => 15,
- ));
+ ]);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/TlsSocketAcceptanceTest.php b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/TlsSocketAcceptanceTest.php
index 1053a87..a5092a2 100644
--- a/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/TlsSocketAcceptanceTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/acceptance/Swift/Transport/StreamBuffer/TlsSocketAcceptanceTest.php
@@ -21,19 +21,19 @@ protected function setUp()
parent::setUp();
}
- protected function _initializeBuffer()
+ protected function initializeBuffer()
{
$parts = explode(':', SWIFT_TLS_HOST);
$host = $parts[0];
- $port = isset($parts[1]) ? $parts[1] : 25;
+ $port = $parts[1] ?? 25;
- $this->_buffer->initialize(array(
+ $this->buffer->initialize([
'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
'host' => $host,
'port' => $port,
'protocol' => 'tls',
'blocking' => 1,
'timeout' => 15,
- ));
+ ]);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug111Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug111Test.php
index ba29ba8..e9085a9 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug111Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug111Test.php
@@ -1,34 +1,34 @@
array(
+ $complicated_header = [
+ 'to' => [
'email1@example.com',
'email2@example.com',
'email3@example.com',
'email4@example.com',
'email5@example.com',
- ),
- 'sub' => array(
- '-name-' => array(
+ ],
+ 'sub' => [
+ '-name-' => [
'email1',
'"email2"',
'email3\\',
'email4',
'email5',
- ),
- '-url-' => array(
+ ],
+ '-url-' => [
'http://google.com',
'http://yahoo.com',
'http://hotmail.com',
'http://aol.com',
'http://facebook.com',
- ),
- ),
- );
+ ],
+ ],
+ ];
$json = json_encode($complicated_header);
$message = new Swift_Message();
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug118Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug118Test.php
index 40b5a77..34aa136 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug118Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug118Test.php
@@ -1,19 +1,19 @@
_message = new Swift_Message();
+ $this->message = new Swift_Message();
}
public function testCallingGenerateIdChangesTheMessageId()
{
- $currentId = $this->_message->getId();
- $this->_message->generateId();
- $newId = $this->_message->getId();
+ $currentId = $this->message->getId();
+ $this->message->generateId();
+ $newId = $this->message->getId();
$this->assertNotEquals($currentId, $newId);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug206Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug206Test.php
index 7563f4d..da75d59 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug206Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug206Test.php
@@ -1,35 +1,37 @@
_factory = new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $grammar);
+ $emailValidator = new EmailValidator();
+ $this->factory = new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $emailValidator);
}
public function testMailboxHeaderEncoding()
{
- $this->_testHeaderIsFullyEncoded('email@example.org', 'Family Name, Name', ' "Family Name, Name" ');
- $this->_testHeaderIsFullyEncoded('email@example.org', 'Family Namé, Name', ' Family =?utf-8?Q?Nam=C3=A9=2C?= Name');
- $this->_testHeaderIsFullyEncoded('email@example.org', 'Family Namé , Name', ' Family =?utf-8?Q?Nam=C3=A9_=2C?= Name');
- $this->_testHeaderIsFullyEncoded('email@example.org', 'Family Namé ;Name', ' Family =?utf-8?Q?Nam=C3=A9_=3BName?= ');
+ $this->doTestHeaderIsFullyEncoded('email@example.org', 'Family Name, Name', ' "Family Name, Name" ');
+ $this->doTestHeaderIsFullyEncoded('email@example.org', 'Family Namé, Name', ' Family =?utf-8?Q?Nam=C3=A9=2C?= Name');
+ $this->doTestHeaderIsFullyEncoded('email@example.org', 'Family Namé , Name', ' Family =?utf-8?Q?Nam=C3=A9_=2C?= Name');
+ $this->doTestHeaderIsFullyEncoded('email@example.org', 'Family Namé ;Name', ' Family =?utf-8?Q?Nam=C3=A9_=3BName?= ');
}
- private function _testHeaderIsFullyEncoded($email, $name, $expected)
+ private function doTestHeaderIsFullyEncoded($email, $name, $expected)
{
- $mailboxHeader = $this->_factory->createMailboxHeader('To', array(
+ $mailboxHeader = $this->factory->createMailboxHeader('To', [
$email => $name,
- ));
+ ]);
$headerBody = substr($mailboxHeader->toString(), 3, strlen($expected));
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug274Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug274Test.php
index f5f057a..ddf6ca1 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug274Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug274Test.php
@@ -1,11 +1,14 @@
setExpectedException('Swift_IoException', 'The path cannot be empty');
$message->attach(Swift_Attachment::fromPath(''));
}
@@ -17,5 +20,6 @@ public function testNonEmptyFileNameAsAttachment()
} catch (Exception $e) {
$this->fail('Path should not be empty');
}
+ $this->addToAssertionCount(1);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug34Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug34Test.php
index 768bf3d..0c8dd17 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug34Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug34Test.php
@@ -1,6 +1,6 @@
setCharset('utf-8');
$message->setSubject('test subject');
$message->addPart('plain part', 'text/plain');
- $image = Swift_Image::newInstance('', 'image.gif', 'image/gif');
+ $image = new Swift_Image('', 'image.gif', 'image/gif');
$cid = $message->embed($image);
$message->setBody('', 'text/html');
- $message->setTo(array('user@domain.tld' => 'User'));
+ $message->setTo(['user@domain.tld' => 'User']);
- $message->setFrom(array('other@domain.tld' => 'Other'));
- $message->setSender(array('other@domain.tld' => 'Other'));
+ $message->setFrom(['other@domain.tld' => 'Other']);
+ $message->setSender(['other@domain.tld' => 'Other']);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
$cidVal = $image->getId();
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug35Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug35Test.php
index 98999f0..66644e9 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug35Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug35Test.php
@@ -1,6 +1,6 @@
setCharset('utf-8');
$message->setSubject('test subject');
$message->addPart('plain part', 'text/plain');
- $attachment = Swift_Attachment::newInstance('', 'image.gif', 'image/gif');
+ $attachment = new Swift_Attachment('', 'image.gif', 'image/gif');
$message->attach($attachment);
$message->setBody('HTML part', 'text/html');
- $message->setTo(array('user@domain.tld' => 'User'));
+ $message->setTo(['user@domain.tld' => 'User']);
- $message->setFrom(array('other@domain.tld' => 'Other'));
- $message->setSender(array('other@domain.tld' => 'Other'));
+ $message->setFrom(['other@domain.tld' => 'Other']);
+ $message->setSender(['other@domain.tld' => 'Other']);
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
$this->assertRegExp(
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug38Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug38Test.php
index 9deae4f..472c805 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug38Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug38Test.php
@@ -1,16 +1,16 @@
_attFileName = 'data.txt';
- $this->_attFileType = 'text/plain';
- $this->_attFile = __DIR__.'/../../_samples/files/data.txt';
+ $this->attFileName = 'data.txt';
+ $this->attFileType = 'text/plain';
+ $this->attFile = __DIR__.'/../../_samples/files/data.txt';
Swift_Preferences::getInstance()->setCharset('utf-8');
}
@@ -28,7 +28,7 @@ public function testWritingMessageToByteStreamProducesCorrectStructure()
$message->setBody('HTML part', 'text/html');
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
$imgId = $image->getId();
@@ -82,7 +82,7 @@ public function testWritingMessageToByteStreamTwiceProducesCorrectStructure()
$message->setBody('HTML part', 'text/html');
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
$imgId = $image->getId();
@@ -133,14 +133,14 @@ public function testWritingMessageToByteStreamTwiceUsingAFileAttachment()
$message->setCc('other@domain.tld');
$message->setFrom('user@domain.tld');
- $attachment = Swift_Attachment::fromPath($this->_attFile);
+ $attachment = Swift_Attachment::fromPath($this->attFile);
$message->attach($attachment);
$message->setBody('HTML part', 'text/html');
$id = $message->getId();
- $date = preg_quote(date('r', $message->getDate()), '~');
+ $date = preg_quote($message->getDate()->format('r'), '~');
$boundary = $message->getBoundary();
$streamA = new Swift_ByteStream_ArrayByteStream();
@@ -164,11 +164,11 @@ public function testWritingMessageToByteStreamTwiceUsingAFileAttachment()
'HTML part'.
"\r\n\r\n".
'--'.$boundary."\r\n".
- 'Content-Type: '.$this->_attFileType.'; name='.$this->_attFileName."\r\n".
+ 'Content-Type: '.$this->attFileType.'; name='.$this->attFileName."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
- 'Content-Disposition: attachment; filename='.$this->_attFileName."\r\n".
+ 'Content-Disposition: attachment; filename='.$this->attFileName."\r\n".
"\r\n".
- preg_quote(base64_encode(file_get_contents($this->_attFile)), '~').
+ preg_quote(base64_encode(file_get_contents($this->attFile)), '~').
"\r\n\r\n".
'--'.$boundary.'--'."\r\n".
'$~D'
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug518Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug518Test.php
index b83984f..e4d1d7c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug518Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug518Test.php
@@ -2,7 +2,7 @@
use Mockery as m;
-class Swift_Bug518Test extends \PHPUnit_Framework_TestCase
+class Swift_Bug518Test extends \SwiftMailerTestCase
{
public function testIfEmailChangesAfterQueued()
{
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug51Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug51Test.php
index 48074f0..fdeb89b 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug51Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug51Test.php
@@ -2,41 +2,41 @@
class Swift_Bug51Test extends \SwiftMailerTestCase
{
- private $_attachmentFile;
- private $_outputFile;
+ private $attachmentFile;
+ private $outputFile;
protected function setUp()
{
- $this->_attachmentFile = sys_get_temp_dir().'/attach.rand.bin';
- file_put_contents($this->_attachmentFile, '');
+ $this->attachmentFile = sys_get_temp_dir().'/attach.rand.bin';
+ file_put_contents($this->attachmentFile, '');
- $this->_outputFile = sys_get_temp_dir().'/attach.out.bin';
- file_put_contents($this->_outputFile, '');
+ $this->outputFile = sys_get_temp_dir().'/attach.out.bin';
+ file_put_contents($this->outputFile, '');
}
protected function tearDown()
{
- unlink($this->_attachmentFile);
- unlink($this->_outputFile);
+ unlink($this->attachmentFile);
+ unlink($this->outputFile);
}
public function testAttachmentsDoNotGetTruncatedUsingToByteStream()
{
//Run 100 times with 10KB attachments
for ($i = 0; $i < 10; ++$i) {
- $message = $this->_createMessageWithRandomAttachment(
- 10000, $this->_attachmentFile
+ $message = $this->createMessageWithRandomAttachment(
+ 10000, $this->attachmentFile
);
- file_put_contents($this->_outputFile, '');
+ file_put_contents($this->outputFile, '');
$message->toByteStream(
- new Swift_ByteStream_FileByteStream($this->_outputFile, true)
+ new Swift_ByteStream_FileByteStream($this->outputFile, true)
);
- $emailSource = file_get_contents($this->_outputFile);
+ $emailSource = file_get_contents($this->outputFile);
$this->assertAttachmentFromSourceMatches(
- file_get_contents($this->_attachmentFile),
+ file_get_contents($this->attachmentFile),
$emailSource
);
}
@@ -46,14 +46,14 @@ public function testAttachmentsDoNotGetTruncatedUsingToString()
{
//Run 100 times with 10KB attachments
for ($i = 0; $i < 10; ++$i) {
- $message = $this->_createMessageWithRandomAttachment(
- 10000, $this->_attachmentFile
+ $message = $this->createMessageWithRandomAttachment(
+ 10000, $this->attachmentFile
);
$emailSource = $message->toString();
$this->assertAttachmentFromSourceMatches(
- file_get_contents($this->_attachmentFile),
+ file_get_contents($this->attachmentFile),
$emailSource
);
}
@@ -79,7 +79,7 @@ public function assertAttachmentFromSourceMatches($attachmentData, $source)
$this->assertIdenticalBinary($attachmentData, base64_decode($attachmentBase64));
}
- private function _fillFileWithRandomBytes($byteCount, $file)
+ private function fillFileWithRandomBytes($byteCount, $file)
{
// I was going to use dd with if=/dev/random but this way seems more
// cross platform even if a hella expensive!!
@@ -87,17 +87,17 @@ private function _fillFileWithRandomBytes($byteCount, $file)
file_put_contents($file, '');
$fp = fopen($file, 'wb');
for ($i = 0; $i < $byteCount; ++$i) {
- $byteVal = rand(0, 255);
+ $byteVal = random_int(0, 255);
fwrite($fp, pack('i', $byteVal));
}
fclose($fp);
}
- private function _createMessageWithRandomAttachment($size, $attachmentPath)
+ private function createMessageWithRandomAttachment($size, $attachmentPath)
{
- $this->_fillFileWithRandomBytes($size, $attachmentPath);
+ $this->fillFileWithRandomBytes($size, $attachmentPath);
- $message = Swift_Message::newInstance()
+ $message = (new Swift_Message())
->setSubject('test')
->setBody('test')
->setFrom('a@b.c')
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug534Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug534Test.php
index 263cae5..6b224f1 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug534Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug534Test.php
@@ -2,11 +2,11 @@
use Mockery as m;
-class Swift_Bug534Test extends \PHPUnit_Framework_TestCase
+class Swift_Bug534Test extends \SwiftMailerTestCase
{
public function testEmbeddedImagesAreEmbedded()
{
- $message = Swift_Message::newInstance()
+ $message = (new Swift_Message())
->setFrom('from@example.com')
->setTo('to@example.com')
->setSubject('test')
@@ -15,7 +15,7 @@ public function testEmbeddedImagesAreEmbedded()
$message->setBody('', 'text/html');
$that = $this;
- $messageValidation = function (Swift_Mime_Message $message) use ($that) {
+ $messageValidation = function (Swift_Mime_SimpleMessage $message) use ($that) {
preg_match('/cid:(.*)"/', $message->toString(), $matches);
$cid = $matches[1];
preg_match('/Content-ID: <(.*)>/', $message->toString(), $matches);
@@ -25,7 +25,7 @@ public function testEmbeddedImagesAreEmbedded()
return true;
};
- $failedRecipients = array();
+ $failedRecipients = [];
$transport = m::mock('Swift_Transport');
$transport->shouldReceive('isStarted')->andReturn(true);
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug650Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug650Test.php
index 3393fb8..60da76d 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug650Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug650Test.php
@@ -1,6 +1,8 @@
setCharset('utf-8');
- $header->setNameAddresses(array(
+ $header->setNameAddresses([
'test@example.com' => $name,
- ));
+ ]);
$this->assertSame('To: '.$expectedEncodedName." \r\n", $header->toString());
}
public function encodingDataProvider()
{
- return array(
- array('this is " a test ö', 'this is =?utf-8?Q?=22?= a test =?utf-8?Q?=C3=B6?='),
- array(': this is a test ö', '=?utf-8?Q?=3A?= this is a test =?utf-8?Q?=C3=B6?='),
- array('( test ö', '=?utf-8?Q?=28?= test =?utf-8?Q?=C3=B6?='),
- array('[ test ö', '=?utf-8?Q?=5B?= test =?utf-8?Q?=C3=B6?='),
- array('@ test ö)', '=?utf-8?Q?=40?= test =?utf-8?Q?=C3=B6=29?='),
- );
+ return [
+ ['this is " a test ö', 'this is =?utf-8?Q?=22?= a test =?utf-8?Q?=C3=B6?='],
+ [': this is a test ö', '=?utf-8?Q?=3A?= this is a test =?utf-8?Q?=C3=B6?='],
+ ['( test ö', '=?utf-8?Q?=28?= test =?utf-8?Q?=C3=B6?='],
+ ['[ test ö', '=?utf-8?Q?=5B?= test =?utf-8?Q?=C3=B6?='],
+ ['@ test ö)', '=?utf-8?Q?=40?= test =?utf-8?Q?=C3=B6=29?='],
+ ];
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug71Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug71Test.php
index d58242f..3075f67 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug71Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug71Test.php
@@ -1,20 +1,20 @@
_message = new Swift_Message('test');
+ $this->message = new Swift_Message('test');
}
public function testCallingToStringAfterSettingNewBodyReflectsChanges()
{
- $this->_message->setBody('BODY1');
- $this->assertRegExp('/BODY1/', $this->_message->toString());
+ $this->message->setBody('BODY1');
+ $this->assertRegExp('/BODY1/', $this->message->toString());
- $this->_message->setBody('BODY2');
- $this->assertRegExp('/BODY2/', $this->_message->toString());
+ $this->message->setBody('BODY2');
+ $this->assertRegExp('/BODY2/', $this->message->toString());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug76Test.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug76Test.php
index 899083c..1db2035 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug76Test.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/Bug76Test.php
@@ -1,38 +1,38 @@
_inputFile = sys_get_temp_dir().'/in.bin';
- file_put_contents($this->_inputFile, '');
+ $this->inputFile = sys_get_temp_dir().'/in.bin';
+ file_put_contents($this->inputFile, '');
- $this->_outputFile = sys_get_temp_dir().'/out.bin';
- file_put_contents($this->_outputFile, '');
+ $this->outputFile = sys_get_temp_dir().'/out.bin';
+ file_put_contents($this->outputFile, '');
- $this->_encoder = $this->_createEncoder();
+ $this->encoder = $this->createEncoder();
}
protected function tearDown()
{
- unlink($this->_inputFile);
- unlink($this->_outputFile);
+ unlink($this->inputFile);
+ unlink($this->outputFile);
}
public function testBase64EncodedLineLengthNeverExceeds76CharactersEvenIfArgsDo()
{
- $this->_fillFileWithRandomBytes(1000, $this->_inputFile);
+ $this->fillFileWithRandomBytes(1000, $this->inputFile);
- $os = $this->_createStream($this->_inputFile);
- $is = $this->_createStream($this->_outputFile);
+ $os = $this->createStream($this->inputFile);
+ $is = $this->createStream($this->outputFile);
- $this->_encoder->encodeByteStream($os, $is, 0, 80); //Exceeds 76
+ $this->encoder->encodeByteStream($os, $is, 0, 80); //Exceeds 76
- $this->assertMaxLineLength(76, $this->_outputFile,
+ $this->assertMaxLineLength(76, $this->outputFile,
'%s: Line length should not exceed 76 characters'
);
}
@@ -45,7 +45,7 @@ public function assertMaxLineLength($length, $filePath, $message = '%s')
}
}
- private function _fillFileWithRandomBytes($byteCount, $file)
+ private function fillFileWithRandomBytes($byteCount, $file)
{
// I was going to use dd with if=/dev/random but this way seems more
// cross platform even if a hella expensive!!
@@ -53,18 +53,18 @@ private function _fillFileWithRandomBytes($byteCount, $file)
file_put_contents($file, '');
$fp = fopen($file, 'wb');
for ($i = 0; $i < $byteCount; ++$i) {
- $byteVal = rand(0, 255);
+ $byteVal = random_int(0, 255);
fwrite($fp, pack('i', $byteVal));
}
fclose($fp);
}
- private function _createEncoder()
+ private function createEncoder()
{
return new Swift_Mime_ContentEncoder_Base64ContentEncoder();
}
- private function _createStream($file)
+ private function createStream($file)
{
return new Swift_ByteStream_FileByteStream($file, true);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/BugFileByteStreamConsecutiveReadCallsTest.php b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/BugFileByteStreamConsecutiveReadCallsTest.php
index 35733ec..eb58071 100644
--- a/vendor/swiftmailer/swiftmailer/tests/bug/Swift/BugFileByteStreamConsecutiveReadCallsTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/bug/Swift/BugFileByteStreamConsecutiveReadCallsTest.php
@@ -1,7 +1,6 @@
_attFile = __DIR__.'/../../../_samples/files/textfile.zip';
+ parent::setUp(); // For skip
+ $this->attFile = __DIR__.'/../../../_samples/files/textfile.zip';
}
public function testAttachmentSending()
{
- $mailer = $this->_getMailer();
- $message = Swift_Message::newInstance()
+ $mailer = $this->getMailer();
+ $message = (new Swift_Message())
->setSubject('[Swift Mailer] AttachmentSmokeTest')
- ->setFrom(array(SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'))
+ ->setFrom([SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'])
->setTo(SWIFT_SMOKE_EMAIL_ADDRESS)
->setBody('This message should contain an attached ZIP file (named "textfile.zip").'.PHP_EOL.
'When unzipped, the archive should produce a text file which reads:'.PHP_EOL.
- '"This is part of a Swift Mailer v4 smoke test."'
+ '"This is part of a Swift Mailer smoke test."'
)
- ->attach(Swift_Attachment::fromPath($this->_attFile))
+ ->attach(Swift_Attachment::fromPath($this->attFile))
;
$this->assertEquals(1, $mailer->send($message),
'%s: The smoke test should send a single message'
diff --git a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/BasicSmokeTest.php b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/BasicSmokeTest.php
index c7501d4..79915b3 100644
--- a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/BasicSmokeTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/BasicSmokeTest.php
@@ -7,10 +7,10 @@ class Swift_Smoke_BasicSmokeTest extends SwiftMailerSmokeTestCase
{
public function testBasicSending()
{
- $mailer = $this->_getMailer();
- $message = Swift_Message::newInstance()
+ $mailer = $this->getMailer();
+ $message = (new Swift_Message())
->setSubject('[Swift Mailer] BasicSmokeTest')
- ->setFrom(array(SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'))
+ ->setFrom([SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'])
->setTo(SWIFT_SMOKE_EMAIL_ADDRESS)
->setBody('One, two, three, four, five...'.PHP_EOL.
'six, seven, eight...'
diff --git a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/HtmlWithAttachmentSmokeTest.php b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/HtmlWithAttachmentSmokeTest.php
index 3b13cc5..5ed6c33 100644
--- a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/HtmlWithAttachmentSmokeTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/HtmlWithAttachmentSmokeTest.php
@@ -5,23 +5,25 @@
*/
class Swift_Smoke_HtmlWithAttachmentSmokeTest extends SwiftMailerSmokeTestCase
{
- private $_attFile;
+ private $attFile;
protected function setUp()
{
- $this->_attFile = __DIR__.'/../../../_samples/files/textfile.zip';
+ parent::setUp();
+
+ $this->attFile = __DIR__.'/../../../_samples/files/textfile.zip';
}
public function testAttachmentSending()
{
- $mailer = $this->_getMailer();
- $message = Swift_Message::newInstance('[Swift Mailer] HtmlWithAttachmentSmokeTest')
- ->setFrom(array(SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'))
+ $mailer = $this->getMailer();
+ $message = (new Swift_Message('[Swift Mailer] HtmlWithAttachmentSmokeTest'))
+ ->setFrom([SWIFT_SMOKE_EMAIL_ADDRESS => 'Swift Mailer'])
->setTo(SWIFT_SMOKE_EMAIL_ADDRESS)
- ->attach(Swift_Attachment::fromPath($this->_attFile))
+ ->attach(Swift_Attachment::fromPath($this->attFile))
->setBody('This HTML-formatted message should contain an attached ZIP file (named "textfile.zip").'.PHP_EOL.
'When unzipped, the archive should produce a text file which reads:
'.PHP_EOL.
- 'This is part of a Swift Mailer v4 smoke test.
', 'text/html'
+ 'This is part of a Swift Mailer smoke test.
', 'text/html'
)
;
$this->assertEquals(1, $mailer->send($message),
diff --git a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/InternationalSmokeTest.php b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/InternationalSmokeTest.php
index b9ebef5..6dc715e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/InternationalSmokeTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/smoke/Swift/Smoke/InternationalSmokeTest.php
@@ -9,26 +9,26 @@ class Swift_Smoke_InternationalSmokeTest extends SwiftMailerSmokeTestCase
protected function setUp()
{
- parent::setup(); // For skip
- $this->_attFile = __DIR__.'/../../../_samples/files/textfile.zip';
+ parent::setUp(); // For skip
+ $this->attFile = __DIR__.'/../../../_samples/files/textfile.zip';
}
public function testAttachmentSending()
{
- $mailer = $this->_getMailer();
- $message = Swift_Message::newInstance()
+ $mailer = $this->getMailer();
+ $message = (new Swift_Message())
->setCharset('utf-8')
->setSubject('[Swift Mailer] InternationalSmokeTest (διεθνής)')
- ->setFrom(array(SWIFT_SMOKE_EMAIL_ADDRESS => 'Χριστοφορου (Swift Mailer)'))
+ ->setFrom([SWIFT_SMOKE_EMAIL_ADDRESS => 'Χριστοφορου (Swift Mailer)'])
->setTo(SWIFT_SMOKE_EMAIL_ADDRESS)
->setBody('This message should contain an attached ZIP file (named "κείμενο, εδάφιο, θέμα.zip").'.PHP_EOL.
'When unzipped, the archive should produce a text file which reads:'.PHP_EOL.
- '"This is part of a Swift Mailer v4 smoke test."'.PHP_EOL.
+ '"This is part of a Swift Mailer smoke test."'.PHP_EOL.
PHP_EOL.
'Following is some arbitrary Greek text:'.PHP_EOL.
'Δεν βρέθηκαν λέξεις.'
)
- ->attach(Swift_Attachment::fromPath($this->_attFile)
+ ->attach(Swift_Attachment::fromPath($this->attFile)
->setContentType('application/zip')
->setFilename('κείμενο, εδάφιο, θέμα.zip')
)
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/ByteStream/ArrayByteStreamTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/ByteStream/ArrayByteStreamTest.php
index 60ebb66..29fe390 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/ByteStream/ArrayByteStreamTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/ByteStream/ArrayByteStreamTest.php
@@ -1,12 +1,12 @@
_createArrayStream($input);
- $output = array();
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
+ $output = [];
while (false !== $bytes = $bs->read(1)) {
$output[] = $bytes;
}
@@ -17,34 +17,34 @@ public function testReadingSingleBytesFromBaseInput()
public function testReadingMultipleBytesFromBaseInput()
{
- $input = array('a', 'b', 'c', 'd');
- $bs = $this->_createArrayStream($input);
- $output = array();
+ $input = ['a', 'b', 'c', 'd'];
+ $bs = $this->createArrayStream($input);
+ $output = [];
while (false !== $bytes = $bs->read(2)) {
$output[] = $bytes;
}
- $this->assertEquals(array('ab', 'cd'), $output,
+ $this->assertEquals(['ab', 'cd'], $output,
'%s: Bytes read from stream should be in pairs'
);
}
public function testReadingOddOffsetOnLastByte()
{
- $input = array('a', 'b', 'c', 'd', 'e');
- $bs = $this->_createArrayStream($input);
- $output = array();
+ $input = ['a', 'b', 'c', 'd', 'e'];
+ $bs = $this->createArrayStream($input);
+ $output = [];
while (false !== $bytes = $bs->read(2)) {
$output[] = $bytes;
}
- $this->assertEquals(array('ab', 'cd', 'e'), $output,
+ $this->assertEquals(['ab', 'cd', 'e'], $output,
'%s: Bytes read from stream should be in pairs except final read'
);
}
public function testSettingPointerPartway()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
$bs->setReadPointer(1);
$this->assertEquals('b', $bs->read(1),
'%s: Byte should be second byte since pointer as at offset 1'
@@ -53,8 +53,9 @@ public function testSettingPointerPartway()
public function testResettingPointerAfterExhaustion()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+
+ $bs = $this->createArrayStream($input);
while (false !== $bs->read(1));
$bs->setReadPointer(0);
@@ -65,8 +66,8 @@ public function testResettingPointerAfterExhaustion()
public function testPointerNeverSetsBelowZero()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
$bs->setReadPointer(-1);
$this->assertEquals('a', $bs->read(1),
@@ -76,8 +77,8 @@ public function testPointerNeverSetsBelowZero()
public function testPointerNeverSetsAboveStackSize()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
$bs->setReadPointer(3);
$this->assertFalse($bs->read(1),
@@ -87,24 +88,24 @@ public function testPointerNeverSetsAboveStackSize()
public function testBytesCanBeWrittenToStream()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
$bs->write('de');
- $output = array();
+ $output = [];
while (false !== $bytes = $bs->read(1)) {
$output[] = $bytes;
}
- $this->assertEquals(array('a', 'b', 'c', 'd', 'e'), $output,
+ $this->assertEquals(['a', 'b', 'c', 'd', 'e'], $output,
'%s: Bytes read from stream should be from initial stack + written'
);
}
public function testContentsCanBeFlushed()
{
- $input = array('a', 'b', 'c');
- $bs = $this->_createArrayStream($input);
+ $input = ['a', 'b', 'c'];
+ $bs = $this->createArrayStream($input);
$bs->flushBuffers();
@@ -115,19 +116,19 @@ public function testContentsCanBeFlushed()
public function testConstructorCanTakeStringArgument()
{
- $bs = $this->_createArrayStream('abc');
- $output = array();
+ $bs = $this->createArrayStream('abc');
+ $output = [];
while (false !== $bytes = $bs->read(1)) {
$output[] = $bytes;
}
- $this->assertEquals(array('a', 'b', 'c'), $output,
+ $this->assertEquals(['a', 'b', 'c'], $output,
'%s: Bytes read from stream should be the same as bytes in constructor'
);
}
public function testBindingOtherStreamsMirrorsWriteOperations()
{
- $bs = $this->_createArrayStream('');
+ $bs = $this->createArrayStream('');
$is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
$is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
@@ -153,7 +154,7 @@ public function testBindingOtherStreamsMirrorsWriteOperations()
public function testBindingOtherStreamsMirrorsFlushOperations()
{
- $bs = $this->_createArrayStream('');
+ $bs = $this->createArrayStream('');
$is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
$is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
@@ -170,7 +171,7 @@ public function testBindingOtherStreamsMirrorsFlushOperations()
public function testUnbindingStreamPreventsFurtherWrites()
{
- $bs = $this->_createArrayStream('');
+ $bs = $this->createArrayStream('');
$is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
$is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock();
@@ -194,7 +195,7 @@ public function testUnbindingStreamPreventsFurtherWrites()
$bs->write('y');
}
- private function _createArrayStream($input)
+ private function createArrayStream($input)
{
return new Swift_ByteStream_ArrayByteStream($input);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/GenericFixedWidthReaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/GenericFixedWidthReaderTest.php
index 3f7a46c..1ba5e78 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/GenericFixedWidthReaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/GenericFixedWidthReaderTest.php
@@ -1,6 +1,6 @@
assertSame(
- 1, $reader->validateByteSequence(array(0x01, 0x02, 0x03), 3)
+ 1, $reader->validateByteSequence([0x01, 0x02, 0x03], 3)
); //3 octets
$this->assertSame(
- 2, $reader->validateByteSequence(array(0x01, 0x0A), 2)
+ 2, $reader->validateByteSequence([0x01, 0x0A], 2)
); //2 octets
$this->assertSame(
- 3, $reader->validateByteSequence(array(0xFE), 1)
+ 3, $reader->validateByteSequence([0xFE], 1)
); //1 octet
$this->assertSame(
- 0, $reader->validateByteSequence(array(0xFE, 0x03, 0x67, 0x9A), 4)
+ 0, $reader->validateByteSequence([0xFE, 0x03, 0x67, 0x9A], 4)
); //All 4 octets
}
@@ -37,7 +37,7 @@ public function testValidationFailsIfTooManyOctets()
$reader = new Swift_CharacterReader_GenericFixedWidthReader(6);
$this->assertSame(-1, $reader->validateByteSequence(
- array(0xFE, 0x03, 0x67, 0x9A, 0x10, 0x09, 0x85), 7
+ [0xFE, 0x03, 0x67, 0x9A, 0x10, 0x09, 0x85], 7
)); //7 octets
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/UsAsciiReaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/UsAsciiReaderTest.php
index 0d56736..b85b0ab 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/UsAsciiReaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/UsAsciiReaderTest.php
@@ -1,6 +1,6 @@
_reader = new Swift_CharacterReader_UsAsciiReader();
+ $this->reader = new Swift_CharacterReader_UsAsciiReader();
}
public function testAllValidAsciiCharactersReturnZero()
{
for ($ordinal = 0x00; $ordinal <= 0x7F; ++$ordinal) {
$this->assertSame(
- 0, $this->_reader->validateByteSequence(array($ordinal), 1)
+ 0, $this->reader->validateByteSequence([$ordinal], 1)
);
}
}
@@ -36,7 +36,7 @@ public function testMultipleBytesAreInvalid()
{
for ($ordinal = 0x00; $ordinal <= 0x7F; $ordinal += 2) {
$this->assertSame(
- -1, $this->_reader->validateByteSequence(array($ordinal, $ordinal + 1), 2)
+ -1, $this->reader->validateByteSequence([$ordinal, $ordinal + 1], 2)
);
}
}
@@ -45,7 +45,7 @@ public function testBytesAboveAsciiRangeAreInvalid()
{
for ($ordinal = 0x80; $ordinal <= 0xFF; ++$ordinal) {
$this->assertSame(
- -1, $this->_reader->validateByteSequence(array($ordinal), 1)
+ -1, $this->reader->validateByteSequence([$ordinal], 1)
);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/Utf8ReaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/Utf8ReaderTest.php
index ec17eeb..0637911 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/Utf8ReaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterReader/Utf8ReaderTest.php
@@ -1,19 +1,19 @@
_reader = new Swift_CharacterReader_Utf8Reader();
+ $this->reader = new Swift_CharacterReader_Utf8Reader();
}
public function testLeading7BitOctetCausesReturnZero()
{
for ($ordinal = 0x00; $ordinal <= 0x7F; ++$ordinal) {
$this->assertSame(
- 0, $this->_reader->validateByteSequence(array($ordinal), 1)
+ 0, $this->reader->validateByteSequence([$ordinal], 1)
);
}
}
@@ -22,7 +22,7 @@ public function testLeadingByteOf2OctetCharCausesReturn1()
{
for ($octet = 0xC0; $octet <= 0xDF; ++$octet) {
$this->assertSame(
- 1, $this->_reader->validateByteSequence(array($octet), 1)
+ 1, $this->reader->validateByteSequence([$octet], 1)
);
}
}
@@ -31,7 +31,7 @@ public function testLeadingByteOf3OctetCharCausesReturn2()
{
for ($octet = 0xE0; $octet <= 0xEF; ++$octet) {
$this->assertSame(
- 2, $this->_reader->validateByteSequence(array($octet), 1)
+ 2, $this->reader->validateByteSequence([$octet], 1)
);
}
}
@@ -40,7 +40,7 @@ public function testLeadingByteOf4OctetCharCausesReturn3()
{
for ($octet = 0xF0; $octet <= 0xF7; ++$octet) {
$this->assertSame(
- 3, $this->_reader->validateByteSequence(array($octet), 1)
+ 3, $this->reader->validateByteSequence([$octet], 1)
);
}
}
@@ -49,7 +49,7 @@ public function testLeadingByteOf5OctetCharCausesReturn4()
{
for ($octet = 0xF8; $octet <= 0xFB; ++$octet) {
$this->assertSame(
- 4, $this->_reader->validateByteSequence(array($octet), 1)
+ 4, $this->reader->validateByteSequence([$octet], 1)
);
}
}
@@ -58,7 +58,7 @@ public function testLeadingByteOf6OctetCharCausesReturn5()
{
for ($octet = 0xFC; $octet <= 0xFD; ++$octet) {
$this->assertSame(
- 5, $this->_reader->validateByteSequence(array($octet), 1)
+ 5, $this->reader->validateByteSequence([$octet], 1)
);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterStream/ArrayCharacterStreamTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterStream/ArrayCharacterStreamTest.php
index 977051e..3500f9f 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterStream/ArrayCharacterStreamTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/CharacterStream/ArrayCharacterStreamTest.php
@@ -1,23 +1,26 @@
_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importString(pack('C*',
0xD0, 0x94,
@@ -32,22 +35,22 @@ public function testValidatorAlgorithmOnImportString()
public function testCharactersWrittenUseValidator()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -63,8 +66,8 @@ public function testCharactersWrittenUseValidator()
public function testReadCharactersAreInTact()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
@@ -72,15 +75,15 @@ public function testReadCharactersAreInTact()
->zeroOrMoreTimes()
->andReturn(1);
//String
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
//Stream
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -108,8 +111,8 @@ public function testReadCharactersAreInTact()
public function testCharactersCanBeReadAsByteArrays()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
@@ -117,15 +120,15 @@ public function testCharactersCanBeReadAsByteArrays()
->zeroOrMoreTimes()
->andReturn(1);
//String
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
//Stream
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -138,30 +141,30 @@ public function testCharactersCanBeReadAsByteArrays()
)
);
- $this->assertEquals(array(0xD0, 0x94), $stream->readBytes(1));
- $this->assertEquals(array(0xD0, 0xB6, 0xD0, 0xBE), $stream->readBytes(2));
- $this->assertEquals(array(0xD0, 0xBB), $stream->readBytes(1));
+ $this->assertEquals([0xD0, 0x94], $stream->readBytes(1));
+ $this->assertEquals([0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(2));
+ $this->assertEquals([0xD0, 0xBB], $stream->readBytes(1));
$this->assertEquals(
- array(0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->readBytes(3)
+ [0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B], $stream->readBytes(3)
);
- $this->assertEquals(array(0xD1, 0x85), $stream->readBytes(1));
+ $this->assertEquals([0xD1, 0x85], $stream->readBytes(1));
$this->assertFalse($stream->readBytes(1));
}
public function testRequestingLargeCharCountPastEndOfStream()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -174,21 +177,21 @@ public function testRequestingLargeCharCountPastEndOfStream()
public function testRequestingByteArrayCountPastEndOfStream()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
- $this->assertEquals(array(0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE),
+ $this->assertEquals([0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE],
$stream->readBytes(100)
);
@@ -197,17 +200,17 @@ public function testRequestingByteArrayCountPastEndOfStream()
public function testPointerOffsetCanBeSet()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -224,17 +227,17 @@ public function testPointerOffsetCanBeSet()
public function testContentsCanBeFlushed()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
@@ -245,9 +248,9 @@ public function testContentsCanBeFlushed()
public function testByteStreamCanBeImportingUsesValidator()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
- $os = $this->_getByteStream();
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
+ $os = $this->getByteStream();
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
@@ -267,18 +270,18 @@ public function testByteStreamCanBeImportingUsesValidator()
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importByteStream($os);
}
public function testImportingStreamProducesCorrectCharArray()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
- $os = $this->_getByteStream();
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
+ $os = $this->getByteStream();
$stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8');
@@ -298,9 +301,9 @@ public function testImportingStreamProducesCorrectCharArray()
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0], 1)->andReturn(1);
$stream->importByteStream($os);
@@ -313,15 +316,15 @@ public function testImportingStreamProducesCorrectCharArray()
public function testAlgorithmWithFixedWidthCharsets()
{
- $reader = $this->_getReader();
- $factory = $this->_getFactory($reader);
+ $reader = $this->getReader();
+ $factory = $this->getFactory($reader);
$reader->shouldReceive('getInitialByteSize')
->zeroOrMoreTimes()
->andReturn(2);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1, 0x8D), 2);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0, 0xBB), 2);
- $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0, 0xB0), 2);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD1, 0x8D], 2);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0, 0xBB], 2);
+ $reader->shouldReceive('validateByteSequence')->once()->with([0xD0, 0xB0], 2);
$stream = new Swift_CharacterStream_ArrayCharacterStream(
$factory, 'utf-8'
@@ -335,12 +338,12 @@ public function testAlgorithmWithFixedWidthCharsets()
$this->assertFalse($stream->read(1));
}
- private function _getReader()
+ private function getReader()
{
return $this->getMockery('Swift_CharacterReader');
}
- private function _getFactory($reader)
+ private function getFactory($reader)
{
$factory = $this->getMockery('Swift_CharacterReaderFactory');
$factory->shouldReceive('getReaderFor')
@@ -351,7 +354,7 @@ private function _getFactory($reader)
return $factory;
}
- private function _getByteStream()
+ private function getByteStream()
{
return $this->getMockery('Swift_OutputByteStream');
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/DependencyContainerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/DependencyContainerTest.php
index ccd14f6..286f832 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/DependencyContainerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/DependencyContainerTest.php
@@ -12,165 +12,180 @@ public function __construct($arg1 = null, $arg2 = null)
}
}
-class Swift_DependencyContainerTest extends \PHPUnit_Framework_TestCase
+class Swift_DependencyContainerTest extends \PHPUnit\Framework\TestCase
{
- private $_container;
+ private $container;
protected function setUp()
{
- $this->_container = new Swift_DependencyContainer();
+ $this->container = new Swift_DependencyContainer();
}
public function testRegisterAndLookupValue()
{
- $this->_container->register('foo')->asValue('bar');
- $this->assertEquals('bar', $this->_container->lookup('foo'));
+ $this->container->register('foo')->asValue('bar');
+ $this->assertEquals('bar', $this->container->lookup('foo'));
}
public function testHasReturnsTrueForRegisteredValue()
{
- $this->_container->register('foo')->asValue('bar');
- $this->assertTrue($this->_container->has('foo'));
+ $this->container->register('foo')->asValue('bar');
+ $this->assertTrue($this->container->has('foo'));
}
public function testHasReturnsFalseForUnregisteredValue()
{
- $this->assertFalse($this->_container->has('foo'));
+ $this->assertFalse($this->container->has('foo'));
}
public function testRegisterAndLookupNewInstance()
{
- $this->_container->register('one')->asNewInstanceOf('One');
- $this->assertInstanceOf('One', $this->_container->lookup('one'));
+ $this->container->register('one')->asNewInstanceOf('One');
+ $this->assertInstanceOf('One', $this->container->lookup('one'));
}
public function testHasReturnsTrueForRegisteredInstance()
{
- $this->_container->register('one')->asNewInstanceOf('One');
- $this->assertTrue($this->_container->has('one'));
+ $this->container->register('one')->asNewInstanceOf('One');
+ $this->assertTrue($this->container->has('one'));
}
public function testNewInstanceIsAlwaysNew()
{
- $this->_container->register('one')->asNewInstanceOf('One');
- $a = $this->_container->lookup('one');
- $b = $this->_container->lookup('one');
+ $this->container->register('one')->asNewInstanceOf('One');
+ $a = $this->container->lookup('one');
+ $b = $this->container->lookup('one');
$this->assertEquals($a, $b);
}
public function testRegisterAndLookupSharedInstance()
{
- $this->_container->register('one')->asSharedInstanceOf('One');
- $this->assertInstanceOf('One', $this->_container->lookup('one'));
+ $this->container->register('one')->asSharedInstanceOf('One');
+ $this->assertInstanceOf('One', $this->container->lookup('one'));
}
public function testHasReturnsTrueForSharedInstance()
{
- $this->_container->register('one')->asSharedInstanceOf('One');
- $this->assertTrue($this->_container->has('one'));
+ $this->container->register('one')->asSharedInstanceOf('One');
+ $this->assertTrue($this->container->has('one'));
}
public function testMultipleSharedInstancesAreSameInstance()
{
- $this->_container->register('one')->asSharedInstanceOf('One');
- $a = $this->_container->lookup('one');
- $b = $this->_container->lookup('one');
+ $this->container->register('one')->asSharedInstanceOf('One');
+ $a = $this->container->lookup('one');
+ $b = $this->container->lookup('one');
$this->assertEquals($a, $b);
}
+ public function testRegisterAndLookupArray()
+ {
+ $this->container->register('One')->asArray();
+ $this->assertSame([], $this->container->lookup('One'));
+ }
+
public function testNewInstanceWithDependencies()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('one')->asNewInstanceOf('One')
- ->withDependencies(array('foo'));
- $obj = $this->_container->lookup('one');
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('one')->asNewInstanceOf('One')
+ ->withDependencies(['foo']);
+ $obj = $this->container->lookup('one');
$this->assertSame('FOO', $obj->arg1);
}
public function testNewInstanceWithMultipleDependencies()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('bar')->asValue(42);
- $this->_container->register('one')->asNewInstanceOf('One')
- ->withDependencies(array('foo', 'bar'));
- $obj = $this->_container->lookup('one');
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('bar')->asValue(42);
+ $this->container->register('one')->asNewInstanceOf('One')
+ ->withDependencies(['foo', 'bar']);
+ $obj = $this->container->lookup('one');
$this->assertSame('FOO', $obj->arg1);
$this->assertSame(42, $obj->arg2);
}
public function testNewInstanceWithInjectedObjects()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('one')->asNewInstanceOf('One');
- $this->_container->register('two')->asNewInstanceOf('One')
- ->withDependencies(array('one', 'foo'));
- $obj = $this->_container->lookup('two');
- $this->assertEquals($this->_container->lookup('one'), $obj->arg1);
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('one')->asNewInstanceOf('One');
+ $this->container->register('two')->asNewInstanceOf('One')
+ ->withDependencies(['one', 'foo']);
+ $obj = $this->container->lookup('two');
+ $this->assertEquals($this->container->lookup('one'), $obj->arg1);
$this->assertSame('FOO', $obj->arg2);
}
public function testNewInstanceWithAddConstructorValue()
{
- $this->_container->register('one')->asNewInstanceOf('One')
+ $this->container->register('one')->asNewInstanceOf('One')
->addConstructorValue('x')
->addConstructorValue(99);
- $obj = $this->_container->lookup('one');
+ $obj = $this->container->lookup('one');
$this->assertSame('x', $obj->arg1);
$this->assertSame(99, $obj->arg2);
}
public function testNewInstanceWithAddConstructorLookup()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('bar')->asValue(42);
- $this->_container->register('one')->asNewInstanceOf('One')
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('bar')->asValue(42);
+ $this->container->register('one')->asNewInstanceOf('One')
->addConstructorLookup('foo')
->addConstructorLookup('bar');
- $obj = $this->_container->lookup('one');
+ $obj = $this->container->lookup('one');
$this->assertSame('FOO', $obj->arg1);
$this->assertSame(42, $obj->arg2);
}
public function testResolvedDependenciesCanBeLookedUp()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('one')->asNewInstanceOf('One');
- $this->_container->register('two')->asNewInstanceOf('One')
- ->withDependencies(array('one', 'foo'));
- $deps = $this->_container->createDependenciesFor('two');
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('one')->asNewInstanceOf('One');
+ $this->container->register('two')->asNewInstanceOf('One')
+ ->withDependencies(['one', 'foo']);
+ $deps = $this->container->createDependenciesFor('two');
$this->assertEquals(
- array($this->_container->lookup('one'), 'FOO'), $deps
+ [$this->container->lookup('one'), 'FOO'], $deps
);
}
public function testArrayOfDependenciesCanBeSpecified()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('one')->asNewInstanceOf('One');
- $this->_container->register('two')->asNewInstanceOf('One')
- ->withDependencies(array(array('one', 'foo'), 'foo'));
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('one')->asNewInstanceOf('One');
+ $this->container->register('two')->asNewInstanceOf('One')
+ ->withDependencies([['one', 'foo'], 'foo']);
- $obj = $this->_container->lookup('two');
- $this->assertEquals(array($this->_container->lookup('one'), 'FOO'), $obj->arg1);
+ $obj = $this->container->lookup('two');
+ $this->assertEquals([$this->container->lookup('one'), 'FOO'], $obj->arg1);
$this->assertSame('FOO', $obj->arg2);
}
+ public function testArrayWithDependencies()
+ {
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('bar')->asValue(42);
+ $this->container->register('one')->asArray('One')
+ ->withDependencies(['foo', 'bar']);
+ $this->assertSame(['FOO', 42], $this->container->lookup('one'));
+ }
+
public function testAliasCanBeSet()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('bar')->asAliasOf('foo');
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('bar')->asAliasOf('foo');
- $this->assertSame('FOO', $this->_container->lookup('bar'));
+ $this->assertSame('FOO', $this->container->lookup('bar'));
}
public function testAliasOfAliasCanBeSet()
{
- $this->_container->register('foo')->asValue('FOO');
- $this->_container->register('bar')->asAliasOf('foo');
- $this->_container->register('zip')->asAliasOf('bar');
- $this->_container->register('button')->asAliasOf('zip');
+ $this->container->register('foo')->asValue('FOO');
+ $this->container->register('bar')->asAliasOf('foo');
+ $this->container->register('zip')->asAliasOf('bar');
+ $this->container->register('button')->asAliasOf('zip');
- $this->assertSame('FOO', $this->_container->lookup('button'));
+ $this->assertSame('FOO', $this->container->lookup('button'));
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Base64EncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Base64EncoderTest.php
index b89eb9f..6387bad 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Base64EncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Base64EncoderTest.php
@@ -1,12 +1,12 @@
_encoder = new Swift_Encoder_Base64Encoder();
+ $this->encoder = new Swift_Encoder_Base64Encoder();
}
/*
@@ -28,15 +28,15 @@ public function testInputOutputRatioIs3to4Bytes()
*/
$this->assertEquals(
- 'MTIz', $this->_encoder->encodeString('123'),
+ 'MTIz', $this->encoder->encodeString('123'),
'%s: 3 bytes of input should yield 4 bytes of output'
);
$this->assertEquals(
- 'MTIzNDU2', $this->_encoder->encodeString('123456'),
+ 'MTIzNDU2', $this->encoder->encodeString('123456'),
'%s: 6 bytes in input should yield 8 bytes of output'
);
$this->assertEquals(
- 'MTIzNDU2Nzg5', $this->_encoder->encodeString('123456789'),
+ 'MTIzNDU2Nzg5', $this->encoder->encodeString('123456789'),
'%s: 9 bytes in input should yield 12 bytes of output'
);
}
@@ -64,25 +64,25 @@ public function testPadLength()
*/
for ($i = 0; $i < 30; ++$i) {
- $input = pack('C', rand(0, 255));
+ $input = pack('C', random_int(0, 255));
$this->assertRegExp(
- '~^[a-zA-Z0-9/\+]{2}==$~', $this->_encoder->encodeString($input),
+ '~^[a-zA-Z0-9/\+]{2}==$~', $this->encoder->encodeString($input),
'%s: A single byte should have 2 bytes of padding'
);
}
for ($i = 0; $i < 30; ++$i) {
- $input = pack('C*', rand(0, 255), rand(0, 255));
+ $input = pack('C*', random_int(0, 255), random_int(0, 255));
$this->assertRegExp(
- '~^[a-zA-Z0-9/\+]{3}=$~', $this->_encoder->encodeString($input),
+ '~^[a-zA-Z0-9/\+]{3}=$~', $this->encoder->encodeString($input),
'%s: Two bytes should have 1 byte of padding'
);
}
for ($i = 0; $i < 30; ++$i) {
- $input = pack('C*', rand(0, 255), rand(0, 255), rand(0, 255));
+ $input = pack('C*', random_int(0, 255), random_int(0, 255), random_int(0, 255));
$this->assertRegExp(
- '~^[a-zA-Z0-9/\+]{4}$~', $this->_encoder->encodeString($input),
+ '~^[a-zA-Z0-9/\+]{4}$~', $this->encoder->encodeString($input),
'%s: Three bytes should have no padding'
);
}
@@ -114,7 +114,7 @@ public function testMaximumLineLengthIs76Characters()
'NUVVZXWFla'; //48
$this->assertEquals(
- $output, $this->_encoder->encodeString($input),
+ $output, $this->encoder->encodeString($input),
'%s: Lines should be no more than 76 characters'
);
}
@@ -141,7 +141,7 @@ public function testMaximumLineLengthCanBeSpecified()
'UlNUVVZXWFla'; //50 *
$this->assertEquals(
- $output, $this->_encoder->encodeString($input, 0, 50),
+ $output, $this->encoder->encodeString($input, 0, 50),
'%s: Lines should be no more than 100 characters'
);
}
@@ -166,7 +166,7 @@ public function testFirstLineLengthCanBeDifferent()
'FRkdISUpLTE1OT1BRUlNUVVZXWFla'; //67
$this->assertEquals(
- $output, $this->_encoder->encodeString($input, 19),
+ $output, $this->encoder->encodeString($input, 19),
'%s: First line offset is 19 so first line should be 57 chars long'
);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/QpEncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/QpEncoderTest.php
index 6740f22..e67b9d8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/QpEncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/QpEncoderTest.php
@@ -32,7 +32,7 @@ public function testPermittedCharactersAreNotEncoded()
foreach (array_merge(range(33, 60), range(62, 126)) as $ordinal) {
$char = chr($ordinal);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -40,7 +40,7 @@ public function testPermittedCharactersAreNotEncoded()
->with($char);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->atLeast()->times(1)
->andReturn(false);
@@ -82,19 +82,19 @@ public function testWhiteSpaceAtLineEndingIsEncoded()
//HT
$string = 'a'.$HT.$HT."\r\n".'b';
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
->once()
->with($string);
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('a')));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x09));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x09));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0D));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0A));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('b')));
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('a')]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x09]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x09]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0D]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0A]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')->once()->andReturn(false);
$encoder = new Swift_Encoder_QpEncoder($charStream);
@@ -106,19 +106,19 @@ public function testWhiteSpaceAtLineEndingIsEncoded()
//SPACE
$string = 'a'.$SPACE.$SPACE."\r\n".'b';
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
->once()
->with($string);
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('a')));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x20));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x20));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0D));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0A));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('b')));
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('a')]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x20]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x20]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0D]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0A]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')->once()->andReturn(false);
$encoder = new Swift_Encoder_QpEncoder($charStream);
@@ -159,22 +159,22 @@ public function testCRLFIsLeftAlone()
$string = 'a'."\r\n".'b'."\r\n".'c'."\r\n";
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
->once()
->with($string);
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('a')));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0D));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0A));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('b')));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0D));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0A));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(ord('c')));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0D));
- $charStream->shouldReceive('readBytes')->once()->andReturn(array(0x0A));
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('a')]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0D]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0A]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('b')]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0D]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0A]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([ord('c')]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0D]);
+ $charStream->shouldReceive('readBytes')->once()->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')->once()->andReturn(false);
$encoder = new Swift_Encoder_QpEncoder($charStream);
@@ -195,7 +195,7 @@ public function testLinesLongerThan76CharactersAreSoftBroken()
$input = str_repeat('a', 140);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -206,7 +206,7 @@ public function testLinesLongerThan76CharactersAreSoftBroken()
for ($i = 0; $i < 140; ++$i) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
if (75 == $i) {
$output .= "=\r\n";
@@ -226,7 +226,7 @@ public function testMaxLineLengthCanBeSpecified()
{
$input = str_repeat('a', 100);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -237,7 +237,7 @@ public function testMaxLineLengthCanBeSpecified()
for ($i = 0; $i < 100; ++$i) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
if (53 == $i) {
$output .= "=\r\n";
@@ -261,7 +261,7 @@ public function testBytesBelowPermittedRangeAreEncoded()
foreach (range(0, 32) as $ordinal) {
$char = chr($ordinal);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -269,7 +269,7 @@ public function testBytesBelowPermittedRangeAreEncoded()
->with($char);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->atLeast()->times(1)
->andReturn(false);
@@ -290,7 +290,7 @@ public function testDecimalByte61IsEncoded()
$char = '=';
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -298,7 +298,7 @@ public function testDecimalByte61IsEncoded()
->with($char);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(61));
+ ->andReturn([61]);
$charStream->shouldReceive('readBytes')
->atLeast()->times(1)
->andReturn(false);
@@ -317,7 +317,7 @@ public function testBytesAbovePermittedRangeAreEncoded()
foreach (range(127, 255) as $ordinal) {
$char = chr($ordinal);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -325,7 +325,7 @@ public function testBytesAbovePermittedRangeAreEncoded()
->with($char);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->atLeast()->times(1)
->andReturn(false);
@@ -342,7 +342,7 @@ public function testFirstLineLengthCanBeDifferent()
{
$input = str_repeat('a', 140);
- $charStream = $this->_createCharStream();
+ $charStream = $this->createCharStream();
$charStream->shouldReceive('flushContents')
->once();
$charStream->shouldReceive('importString')
@@ -353,7 +353,7 @@ public function testFirstLineLengthCanBeDifferent()
for ($i = 0; $i < 140; ++$i) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
if (53 == $i || 53 + 75 == $i) {
$output .= "=\r\n";
@@ -385,7 +385,7 @@ public function testTextIsPreWrapped()
);
}
- private function _createCharStream()
+ private function createCharStream()
{
return $this->getMockery('Swift_CharacterStream')->shouldIgnoreMissing();
}
@@ -393,7 +393,7 @@ private function _createCharStream()
private function createEncoder()
{
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
- $charStream = new Swift_CharacterStream_NgCharacterStream($factory, 'utf-8');
+ $charStream = new Swift_CharacterStream_CharacterStream($factory, 'utf-8');
return new Swift_Encoder_QpEncoder($charStream);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Rfc2231EncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Rfc2231EncoderTest.php
index 28eae6f..0ab8aa4 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Rfc2231EncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Encoder/Rfc2231EncoderTest.php
@@ -2,7 +2,7 @@
class Swift_Encoder_Rfc2231EncoderTest extends \SwiftMailerTestCase
{
- private $_rfc2045Token = '/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+$/D';
+ private $rfc2045Token = '/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+$/D';
/* --
This algorithm is described in RFC 2231, but is barely touched upon except
@@ -39,7 +39,7 @@ public function testEncodingAsciiCharactersProducesValidToken()
$encoded = $encoder->encodeString($string);
foreach (explode("\r\n", $encoded) as $line) {
- $this->assertRegExp($this->_rfc2045Token, $line,
+ $this->assertRegExp($this->rfc2045Token, $line,
'%s: Encoder should always return a valid RFC 2045 token.');
}
}
@@ -69,7 +69,7 @@ public function testEncodingNonAsciiCharactersProducesValidToken()
$encoded = $encoder->encodeString($string);
foreach (explode("\r\n", $encoded) as $line) {
- $this->assertRegExp($this->_rfc2045Token, $line,
+ $this->assertRegExp($this->rfc2045Token, $line,
'%s: Encoder should always return a valid RFC 2045 token.');
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/CommandEventTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/CommandEventTest.php
index a78bc3a..2915870 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/CommandEventTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/CommandEventTest.php
@@ -1,33 +1,33 @@
_createEvent($this->_createTransport(), "FOO\r\n");
+ $evt = $this->createEvent($this->createTransport(), "FOO\r\n");
$this->assertEquals("FOO\r\n", $evt->getCommand());
}
public function testSuccessCodesCanBeFetchedViaGetter()
{
- $evt = $this->_createEvent($this->_createTransport(), "FOO\r\n", array(250));
- $this->assertEquals(array(250), $evt->getSuccessCodes());
+ $evt = $this->createEvent($this->createTransport(), "FOO\r\n", [250]);
+ $this->assertEquals([250], $evt->getSuccessCodes());
}
public function testSourceIsBuffer()
{
- $transport = $this->_createTransport();
- $evt = $this->_createEvent($transport, "FOO\r\n");
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport, "FOO\r\n");
$ref = $evt->getSource();
$this->assertEquals($transport, $ref);
}
- private function _createEvent(Swift_Transport $source, $command, $successCodes = array())
+ private function createEvent(Swift_Transport $source, $command, $successCodes = [])
{
return new Swift_Events_CommandEvent($source, $command, $successCodes);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/EventObjectTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/EventObjectTest.php
index 0cfe3ca..b67461f 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/EventObjectTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/EventObjectTest.php
@@ -1,11 +1,11 @@
_createEvent($source);
+ $evt = $this->createEvent($source);
$ref = $evt->getSource();
$this->assertEquals($source, $ref);
}
@@ -13,19 +13,19 @@ public function testEventSourceCanBeReturnedViaGetter()
public function testEventDoesNotHaveCancelledBubbleWhenNew()
{
$source = new stdClass();
- $evt = $this->_createEvent($source);
+ $evt = $this->createEvent($source);
$this->assertFalse($evt->bubbleCancelled());
}
public function testBubbleCanBeCancelledInEvent()
{
$source = new stdClass();
- $evt = $this->_createEvent($source);
+ $evt = $this->createEvent($source);
$evt->cancelBubble();
$this->assertTrue($evt->bubbleCancelled());
}
- private function _createEvent($source)
+ private function createEvent($source)
{
return new Swift_Events_EventObject($source);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/ResponseEventTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/ResponseEventTest.php
index 6f611ac..ba5c191 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/ResponseEventTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/ResponseEventTest.php
@@ -1,10 +1,10 @@
_createEvent($this->_createTransport(), "250 Ok\r\n", true);
+ $evt = $this->createEvent($this->createTransport(), "250 Ok\r\n", true);
$this->assertEquals("250 Ok\r\n", $evt->getResponse(),
'%s: Response should be available via getResponse()'
);
@@ -12,7 +12,7 @@ public function testResponseCanBeFetchViaGetter()
public function testResultCanBeFetchedViaGetter()
{
- $evt = $this->_createEvent($this->_createTransport(), "250 Ok\r\n", false);
+ $evt = $this->createEvent($this->createTransport(), "250 Ok\r\n", false);
$this->assertFalse($evt->isValid(),
'%s: Result should be checkable via isValid()'
);
@@ -20,18 +20,18 @@ public function testResultCanBeFetchedViaGetter()
public function testSourceIsBuffer()
{
- $transport = $this->_createTransport();
- $evt = $this->_createEvent($transport, "250 Ok\r\n", true);
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport, "250 Ok\r\n", true);
$ref = $evt->getSource();
$this->assertEquals($transport, $ref);
}
- private function _createEvent(Swift_Transport $source, $response, $result)
+ private function createEvent(Swift_Transport $source, $response, $result)
{
return new Swift_Events_ResponseEvent($source, $response, $result);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SendEventTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SendEventTest.php
index c4a6a7e..9f55589 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SendEventTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SendEventTest.php
@@ -1,13 +1,13 @@
_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
+ $evt = $this->createEvent($transport, $message);
$ref = $evt->getMessage();
$this->assertEquals($message, $ref,
@@ -17,10 +17,10 @@ public function testMessageCanBeFetchedViaGetter()
public function testTransportCanBeFetchViaGetter()
{
- $message = $this->_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
+ $evt = $this->createEvent($transport, $message);
$ref = $evt->getTransport();
$this->assertEquals($transport, $ref,
@@ -30,10 +30,10 @@ public function testTransportCanBeFetchViaGetter()
public function testTransportCanBeFetchViaGetSource()
{
- $message = $this->_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
+ $evt = $this->createEvent($transport, $message);
$ref = $evt->getSource();
$this->assertEquals($transport, $ref,
@@ -43,10 +43,10 @@ public function testTransportCanBeFetchViaGetSource()
public function testResultCanBeSetAndGet()
{
- $message = $this->_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
+ $evt = $this->createEvent($transport, $message);
$evt->setResult(
Swift_Events_SendEvent::RESULT_SUCCESS | Swift_Events_SendEvent::RESULT_TENTATIVE
@@ -58,40 +58,39 @@ public function testResultCanBeSetAndGet()
public function testFailedRecipientsCanBeSetAndGet()
{
- $message = $this->_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
+ $evt = $this->createEvent($transport, $message);
- $evt->setFailedRecipients(array('foo@bar', 'zip@button'));
+ $evt->setFailedRecipients(['foo@bar', 'zip@button']);
- $this->assertEquals(array('foo@bar', 'zip@button'), $evt->getFailedRecipients(),
+ $this->assertEquals(['foo@bar', 'zip@button'], $evt->getFailedRecipients(),
'%s: FailedRecipients should be returned from getter'
);
}
public function testFailedRecipientsGetsPickedUpCorrectly()
{
- $message = $this->_createMessage();
- $transport = $this->_createTransport();
+ $message = $this->createMessage();
+ $transport = $this->createTransport();
- $evt = $this->_createEvent($transport, $message);
- $this->assertEquals(array(), $evt->getFailedRecipients());
+ $evt = $this->createEvent($transport, $message);
+ $this->assertEquals([], $evt->getFailedRecipients());
}
- private function _createEvent(Swift_Transport $source,
- Swift_Mime_Message $message)
+ private function createEvent(Swift_Transport $source, Swift_Mime_SimpleMessage $message)
{
return new Swift_Events_SendEvent($source, $message);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
- private function _createMessage()
+ private function createMessage()
{
- return $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ return $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SimpleEventDispatcherTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SimpleEventDispatcherTest.php
index 3f063ff..d5dce2b 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SimpleEventDispatcherTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/SimpleEventDispatcherTest.php
@@ -1,19 +1,19 @@
_dispatcher = new Swift_Events_SimpleEventDispatcher();
+ $this->dispatcher = new Swift_Events_SimpleEventDispatcher();
}
public function testSendEventCanBeCreated()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
- $message = $this->getMockBuilder('Swift_Mime_Message')->getMock();
- $evt = $this->_dispatcher->createSendEvent($transport, $message);
+ $message = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
+ $evt = $this->dispatcher->createSendEvent($transport, $message);
$this->assertInstanceOf('Swift_Events_SendEvent', $evt);
$this->assertSame($message, $evt->getMessage());
$this->assertSame($transport, $evt->getTransport());
@@ -22,17 +22,17 @@ public function testSendEventCanBeCreated()
public function testCommandEventCanBeCreated()
{
$buf = $this->getMockBuilder('Swift_Transport')->getMock();
- $evt = $this->_dispatcher->createCommandEvent($buf, "FOO\r\n", array(250));
+ $evt = $this->dispatcher->createCommandEvent($buf, "FOO\r\n", [250]);
$this->assertInstanceOf('Swift_Events_CommandEvent', $evt);
$this->assertSame($buf, $evt->getSource());
$this->assertEquals("FOO\r\n", $evt->getCommand());
- $this->assertEquals(array(250), $evt->getSuccessCodes());
+ $this->assertEquals([250], $evt->getSuccessCodes());
}
public function testResponseEventCanBeCreated()
{
$buf = $this->getMockBuilder('Swift_Transport')->getMock();
- $evt = $this->_dispatcher->createResponseEvent($buf, "250 Ok\r\n", true);
+ $evt = $this->dispatcher->createResponseEvent($buf, "250 Ok\r\n", true);
$this->assertInstanceOf('Swift_Events_ResponseEvent', $evt);
$this->assertSame($buf, $evt->getSource());
$this->assertEquals("250 Ok\r\n", $evt->getResponse());
@@ -42,7 +42,7 @@ public function testResponseEventCanBeCreated()
public function testTransportChangeEventCanBeCreated()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
- $evt = $this->_dispatcher->createTransportChangeEvent($transport);
+ $evt = $this->dispatcher->createTransportChangeEvent($transport);
$this->assertInstanceOf('Swift_Events_TransportChangeEvent', $evt);
$this->assertSame($transport, $evt->getSource());
}
@@ -51,7 +51,7 @@ public function testTransportExceptionEventCanBeCreated()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
$ex = new Swift_TransportException('');
- $evt = $this->_dispatcher->createTransportExceptionEvent($transport, $ex);
+ $evt = $this->dispatcher->createTransportExceptionEvent($transport, $ex);
$this->assertInstanceOf('Swift_Events_TransportExceptionEvent', $evt);
$this->assertSame($transport, $evt->getSource());
$this->assertSame($ex, $evt->getException());
@@ -61,13 +61,13 @@ public function testListenersAreNotifiedOfDispatchedEvent()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
- $evt = $this->_dispatcher->createTransportChangeEvent($transport);
+ $evt = $this->dispatcher->createTransportChangeEvent($transport);
$listenerA = $this->getMockBuilder('Swift_Events_TransportChangeListener')->getMock();
$listenerB = $this->getMockBuilder('Swift_Events_TransportChangeListener')->getMock();
- $this->_dispatcher->bindEventListener($listenerA);
- $this->_dispatcher->bindEventListener($listenerB);
+ $this->dispatcher->bindEventListener($listenerA);
+ $this->dispatcher->bindEventListener($listenerB);
$listenerA->expects($this->once())
->method('transportStarted')
@@ -76,21 +76,21 @@ public function testListenersAreNotifiedOfDispatchedEvent()
->method('transportStarted')
->with($evt);
- $this->_dispatcher->dispatchEvent($evt, 'transportStarted');
+ $this->dispatcher->dispatchEvent($evt, 'transportStarted');
}
public function testListenersAreOnlyCalledIfImplementingCorrectInterface()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
- $message = $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ $message = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
- $evt = $this->_dispatcher->createSendEvent($transport, $message);
+ $evt = $this->dispatcher->createSendEvent($transport, $message);
$targetListener = $this->getMockBuilder('Swift_Events_SendListener')->getMock();
$otherListener = $this->getMockBuilder('DummyListener')->getMock();
- $this->_dispatcher->bindEventListener($targetListener);
- $this->_dispatcher->bindEventListener($otherListener);
+ $this->dispatcher->bindEventListener($targetListener);
+ $this->dispatcher->bindEventListener($otherListener);
$targetListener->expects($this->once())
->method('sendPerformed')
@@ -98,21 +98,21 @@ public function testListenersAreOnlyCalledIfImplementingCorrectInterface()
$otherListener->expects($this->never())
->method('sendPerformed');
- $this->_dispatcher->dispatchEvent($evt, 'sendPerformed');
+ $this->dispatcher->dispatchEvent($evt, 'sendPerformed');
}
public function testListenersCanCancelBubblingOfEvent()
{
$transport = $this->getMockBuilder('Swift_Transport')->getMock();
- $message = $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ $message = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
- $evt = $this->_dispatcher->createSendEvent($transport, $message);
+ $evt = $this->dispatcher->createSendEvent($transport, $message);
$listenerA = $this->getMockBuilder('Swift_Events_SendListener')->getMock();
$listenerB = $this->getMockBuilder('Swift_Events_SendListener')->getMock();
- $this->_dispatcher->bindEventListener($listenerA);
- $this->_dispatcher->bindEventListener($listenerB);
+ $this->dispatcher->bindEventListener($listenerA);
+ $this->dispatcher->bindEventListener($listenerB);
$listenerA->expects($this->once())
->method('sendPerformed')
@@ -123,12 +123,12 @@ public function testListenersCanCancelBubblingOfEvent()
$listenerB->expects($this->never())
->method('sendPerformed');
- $this->_dispatcher->dispatchEvent($evt, 'sendPerformed');
+ $this->dispatcher->dispatchEvent($evt, 'sendPerformed');
$this->assertTrue($evt->bubbleCancelled());
}
- private function _createDispatcher(array $map)
+ private function createDispatcher(array $map)
{
return new Swift_Events_SimpleEventDispatcher($map);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportChangeEventTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportChangeEventTest.php
index a260ccb..625b96c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportChangeEventTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportChangeEventTest.php
@@ -1,29 +1,29 @@
_createTransport();
- $evt = $this->_createEvent($transport);
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport);
$ref = $evt->getTransport();
$this->assertEquals($transport, $ref);
}
public function testSourceIsTransport()
{
- $transport = $this->_createTransport();
- $evt = $this->_createEvent($transport);
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport);
$ref = $evt->getSource();
$this->assertEquals($transport, $ref);
}
- private function _createEvent(Swift_Transport $source)
+ private function createEvent(Swift_Transport $source)
{
return new Swift_Events_TransportChangeEvent($source);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportExceptionEventTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportExceptionEventTest.php
index 731dfad..033b0e5 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportExceptionEventTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Events/TransportExceptionEventTest.php
@@ -1,12 +1,12 @@
_createException();
- $transport = $this->_createTransport();
- $evt = $this->_createEvent($transport, $ex);
+ $ex = $this->createException();
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport, $ex);
$ref = $evt->getException();
$this->assertEquals($ex, $ref,
'%s: Exception should be available via getException()'
@@ -15,26 +15,26 @@ public function testExceptionCanBeFetchViaGetter()
public function testSourceIsTransport()
{
- $ex = $this->_createException();
- $transport = $this->_createTransport();
- $evt = $this->_createEvent($transport, $ex);
+ $ex = $this->createException();
+ $transport = $this->createTransport();
+ $evt = $this->createEvent($transport, $ex);
$ref = $evt->getSource();
$this->assertEquals($transport, $ref,
'%s: Transport should be available via getSource()'
);
}
- private function _createEvent(Swift_Transport $transport, Swift_TransportException $ex)
+ private function createEvent(Swift_Transport $transport, Swift_TransportException $ex)
{
return new Swift_Events_TransportExceptionEvent($transport, $ex);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
- private function _createException()
+ private function createException()
{
return new Swift_TransportException('');
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/ArrayKeyCacheTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/ArrayKeyCacheTest.php
index f2ed5dd..129c99e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/ArrayKeyCacheTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/ArrayKeyCacheTest.php
@@ -1,92 +1,92 @@
_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('test', $cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeOverwritten()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$cache->setString(
- $this->_key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'whatever', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('whatever', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('whatever', $cache->getString($this->key1, 'foo'));
}
public function testStringDataCanBeAppended()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$cache->setString(
- $this->_key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
+ $this->key1, 'foo', 'ing', Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testing', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testing', $cache->getString($this->key1, 'foo'));
}
public function testHasKeyReturnValue()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyIsWellPartitioned()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$cache->setString(
- $this->_key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->key2, 'foo', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $cache->getString($this->_key2, 'foo'));
+ $this->assertEquals('test', $cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $cache->getString($this->key2, 'foo'));
}
public function testItemKeyIsWellPartitioned()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$cache->setString(
- $this->_key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'bar', 'ing', Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('test', $cache->getString($this->_key1, 'foo'));
- $this->assertEquals('ing', $cache->getString($this->_key1, 'bar'));
+ $this->assertEquals('test', $cache->getString($this->key1, 'foo'));
+ $this->assertEquals('ing', $cache->getString($this->key1, 'bar'));
}
public function testByteStreamCanBeImported()
{
- $os = $this->_createOutputStream();
+ $os = $this->createOutputStream();
$os->expects($this->at(0))
->method('read')
->will($this->returnValue('abc'));
@@ -97,17 +97,17 @@ public function testByteStreamCanBeImported()
->method('read')
->will($this->returnValue(false));
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_WRITE
);
- $this->assertEquals('abcdef', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdef', $cache->getString($this->key1, 'foo'));
}
public function testByteStreamCanBeAppended()
{
- $os1 = $this->_createOutputStream();
+ $os1 = $this->createOutputStream();
$os1->expects($this->at(0))
->method('read')
->will($this->returnValue('abc'));
@@ -118,7 +118,7 @@ public function testByteStreamCanBeAppended()
->method('read')
->will($this->returnValue(false));
- $os2 = $this->_createOutputStream();
+ $os2 = $this->createOutputStream();
$os2->expects($this->at(0))
->method('read')
->will($this->returnValue('xyz'));
@@ -129,23 +129,23 @@ public function testByteStreamCanBeAppended()
->method('read')
->will($this->returnValue(false));
- $is = $this->_createKeyCacheInputStream(true);
+ $is = $this->createKeyCacheInputStream(true);
- $cache = $this->_createCache($is);
+ $cache = $this->createCache($is);
$cache->importFromByteStream(
- $this->_key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
+ $this->key1, 'foo', $os1, Swift_KeyCache::MODE_APPEND
);
$cache->importFromByteStream(
- $this->_key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
+ $this->key1, 'foo', $os2, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('abcdefxyzuvw', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('abcdefxyzuvw', $cache->getString($this->key1, 'foo'));
}
public function testByteStreamAndStringCanBeAppended()
{
- $os = $this->_createOutputStream();
+ $os = $this->createOutputStream();
$os->expects($this->at(0))
->method('read')
->will($this->returnValue('abc'));
@@ -156,84 +156,84 @@ public function testByteStreamAndStringCanBeAppended()
->method('read')
->will($this->returnValue(false));
- $is = $this->_createKeyCacheInputStream(true);
+ $is = $this->createKeyCacheInputStream(true);
- $cache = $this->_createCache($is);
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_APPEND
);
$cache->importFromByteStream(
- $this->_key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
+ $this->key1, 'foo', $os, Swift_KeyCache::MODE_APPEND
);
- $this->assertEquals('testabcdef', $cache->getString($this->_key1, 'foo'));
+ $this->assertEquals('testabcdef', $cache->getString($this->key1, 'foo'));
}
public function testDataCanBeExportedToByteStream()
{
//See acceptance test for more detail
- $is = $this->_createInputStream();
+ $is = $this->createInputStream();
$is->expects($this->atLeastOnce())
->method('write');
- $kcis = $this->_createKeyCacheInputStream(true);
+ $kcis = $this->createKeyCacheInputStream(true);
- $cache = $this->_createCache($kcis);
+ $cache = $this->createCache($kcis);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $cache->exportToByteStream($this->_key1, 'foo', $is);
+ $cache->exportToByteStream($this->key1, 'foo', $is);
}
public function testKeyCanBeCleared()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($cache->hasKey($this->_key1, 'foo'));
- $cache->clearKey($this->_key1, 'foo');
- $this->assertFalse($cache->hasKey($this->_key1, 'foo'));
+ $this->assertTrue($cache->hasKey($this->key1, 'foo'));
+ $cache->clearKey($this->key1, 'foo');
+ $this->assertFalse($cache->hasKey($this->key1, 'foo'));
}
public function testNsKeyCanBeCleared()
{
- $is = $this->_createKeyCacheInputStream();
- $cache = $this->_createCache($is);
+ $is = $this->createKeyCacheInputStream();
+ $cache = $this->createCache($is);
$cache->setString(
- $this->_key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'foo', 'test', Swift_KeyCache::MODE_WRITE
);
$cache->setString(
- $this->_key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
+ $this->key1, 'bar', 'xyz', Swift_KeyCache::MODE_WRITE
);
- $this->assertTrue($cache->hasKey($this->_key1, 'foo'));
- $this->assertTrue($cache->hasKey($this->_key1, 'bar'));
- $cache->clearAll($this->_key1);
- $this->assertFalse($cache->hasKey($this->_key1, 'foo'));
- $this->assertFalse($cache->hasKey($this->_key1, 'bar'));
+ $this->assertTrue($cache->hasKey($this->key1, 'foo'));
+ $this->assertTrue($cache->hasKey($this->key1, 'bar'));
+ $cache->clearAll($this->key1);
+ $this->assertFalse($cache->hasKey($this->key1, 'foo'));
+ $this->assertFalse($cache->hasKey($this->key1, 'bar'));
}
- private function _createCache($is)
+ private function createCache($is)
{
return new Swift_KeyCache_ArrayKeyCache($is);
}
- private function _createKeyCacheInputStream()
+ private function createKeyCacheInputStream()
{
return $this->getMockBuilder('Swift_KeyCache_KeyCacheInputStream')->getMock();
}
- private function _createOutputStream()
+ private function createOutputStream()
{
return $this->getMockBuilder('Swift_OutputByteStream')->getMock();
}
- private function _createInputStream()
+ private function createInputStream()
{
return $this->getMockBuilder('Swift_InputByteStream')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/SimpleKeyCacheInputStreamTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/SimpleKeyCacheInputStreamTest.php
index 38fbc0d..4274aaf 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/SimpleKeyCacheInputStreamTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/KeyCache/SimpleKeyCacheInputStreamTest.php
@@ -1,25 +1,25 @@
getMockBuilder('Swift_KeyCache')->getMock();
$cache->expects($this->at(0))
->method('setString')
- ->with($this->_nsKey, 'foo', 'a', Swift_KeyCache::MODE_APPEND);
+ ->with($this->nsKey, 'foo', 'a', Swift_KeyCache::MODE_APPEND);
$cache->expects($this->at(1))
->method('setString')
- ->with($this->_nsKey, 'foo', 'b', Swift_KeyCache::MODE_APPEND);
+ ->with($this->nsKey, 'foo', 'b', Swift_KeyCache::MODE_APPEND);
$cache->expects($this->at(2))
->method('setString')
- ->with($this->_nsKey, 'foo', 'c', Swift_KeyCache::MODE_APPEND);
+ ->with($this->nsKey, 'foo', 'c', Swift_KeyCache::MODE_APPEND);
$stream = new Swift_KeyCache_SimpleKeyCacheInputStream();
$stream->setKeyCache($cache);
- $stream->setNsKey($this->_nsKey);
+ $stream->setNsKey($this->nsKey);
$stream->setItemKey('foo');
$stream->write('a');
@@ -32,11 +32,11 @@ public function testFlushContentClearsKey()
$cache = $this->getMockBuilder('Swift_KeyCache')->getMock();
$cache->expects($this->once())
->method('clearKey')
- ->with($this->_nsKey, 'foo');
+ ->with($this->nsKey, 'foo');
$stream = new Swift_KeyCache_SimpleKeyCacheInputStream();
$stream->setKeyCache($cache);
- $stream->setNsKey($this->_nsKey);
+ $stream->setNsKey($this->nsKey);
$stream->setItemKey('foo');
$stream->flushBuffers();
@@ -47,17 +47,17 @@ public function testClonedStreamStillReferencesSameCache()
$cache = $this->getMockBuilder('Swift_KeyCache')->getMock();
$cache->expects($this->at(0))
->method('setString')
- ->with($this->_nsKey, 'foo', 'a', Swift_KeyCache::MODE_APPEND);
+ ->with($this->nsKey, 'foo', 'a', Swift_KeyCache::MODE_APPEND);
$cache->expects($this->at(1))
->method('setString')
- ->with($this->_nsKey, 'foo', 'b', Swift_KeyCache::MODE_APPEND);
+ ->with($this->nsKey, 'foo', 'b', Swift_KeyCache::MODE_APPEND);
$cache->expects($this->at(2))
->method('setString')
->with('test', 'bar', 'x', Swift_KeyCache::MODE_APPEND);
$stream = new Swift_KeyCache_SimpleKeyCacheInputStream();
$stream->setKeyCache($cache);
- $stream->setNsKey($this->_nsKey);
+ $stream->setNsKey($this->nsKey);
$stream->setItemKey('foo');
$stream->write('a');
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mailer/ArrayRecipientIteratorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mailer/ArrayRecipientIteratorTest.php
index ff0bce4..12506dd 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mailer/ArrayRecipientIteratorTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mailer/ArrayRecipientIteratorTest.php
@@ -1,22 +1,22 @@
assertFalse($it->hasNext());
}
public function testHasNextReturnsTrueIfItemsLeft()
{
- $it = new Swift_Mailer_ArrayRecipientIterator(array('foo@bar' => 'Foo'));
+ $it = new Swift_Mailer_ArrayRecipientIterator(['foo@bar' => 'Foo']);
$this->assertTrue($it->hasNext());
}
public function testReadingToEndOfListCausesHasNextToReturnFalse()
{
- $it = new Swift_Mailer_ArrayRecipientIterator(array('foo@bar' => 'Foo'));
+ $it = new Swift_Mailer_ArrayRecipientIterator(['foo@bar' => 'Foo']);
$this->assertTrue($it->hasNext());
$it->nextRecipient();
$this->assertFalse($it->hasNext());
@@ -24,19 +24,19 @@ public function testReadingToEndOfListCausesHasNextToReturnFalse()
public function testReturnedValueHasPreservedKeyValuePair()
{
- $it = new Swift_Mailer_ArrayRecipientIterator(array('foo@bar' => 'Foo'));
- $this->assertEquals(array('foo@bar' => 'Foo'), $it->nextRecipient());
+ $it = new Swift_Mailer_ArrayRecipientIterator(['foo@bar' => 'Foo']);
+ $this->assertEquals(['foo@bar' => 'Foo'], $it->nextRecipient());
}
public function testIteratorMovesNextAfterEachIteration()
{
- $it = new Swift_Mailer_ArrayRecipientIterator(array(
+ $it = new Swift_Mailer_ArrayRecipientIterator([
'foo@bar' => 'Foo',
'zip@button' => 'Zip thing',
'test@test' => null,
- ));
- $this->assertEquals(array('foo@bar' => 'Foo'), $it->nextRecipient());
- $this->assertEquals(array('zip@button' => 'Zip thing'), $it->nextRecipient());
- $this->assertEquals(array('test@test' => null), $it->nextRecipient());
+ ]);
+ $this->assertEquals(['foo@bar' => 'Foo'], $it->nextRecipient());
+ $this->assertEquals(['zip@button' => 'Zip thing'], $it->nextRecipient());
+ $this->assertEquals(['test@test' => null], $it->nextRecipient());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MailerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MailerTest.php
index 74951a7..a2a96d0 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MailerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MailerTest.php
@@ -4,8 +4,8 @@ class Swift_MailerTest extends \SwiftMailerTestCase
{
public function testTransportIsStartedWhenSending()
{
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$started = false;
$transport->shouldReceive('isStarted')
@@ -21,14 +21,14 @@ public function testTransportIsStartedWhenSending()
return;
});
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
$mailer->send($message);
}
public function testTransportIsOnlyStartedOnce()
{
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$started = false;
$transport->shouldReceive('isStarted')
@@ -44,7 +44,7 @@ public function testTransportIsOnlyStartedOnce()
return;
});
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
for ($i = 0; $i < 10; ++$i) {
$mailer->send($message);
}
@@ -52,69 +52,69 @@ public function testTransportIsOnlyStartedOnce()
public function testMessageIsPassedToTransport()
{
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$transport->shouldReceive('send')
->once()
->with($message, \Mockery::any());
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
$mailer->send($message);
}
public function testSendReturnsCountFromTransport()
{
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$transport->shouldReceive('send')
->once()
->with($message, \Mockery::any())
->andReturn(57);
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
$this->assertEquals(57, $mailer->send($message));
}
public function testFailedRecipientReferenceIsPassedToTransport()
{
- $failures = array();
+ $failures = [];
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$transport->shouldReceive('send')
->once()
->with($message, $failures)
->andReturn(57);
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
$mailer->send($message, $failures);
}
public function testSendRecordsRfcComplianceExceptionAsEntireSendFailure()
{
- $failures = array();
+ $failures = [];
$rfcException = new Swift_RfcComplianceException('test');
- $transport = $this->_createTransport();
- $message = $this->_createMessage();
+ $transport = $this->createTransport();
+ $message = $this->createMessage();
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo&invalid' => 'Foo', 'bar@valid.tld' => 'Bar'));
+ ->andReturn(['foo&invalid' => 'Foo', 'bar@valid.tld' => 'Bar']);
$transport->shouldReceive('send')
->once()
->with($message, $failures)
->andThrow($rfcException);
- $mailer = $this->_createMailer($transport);
+ $mailer = $this->createMailer($transport);
$this->assertEquals(0, $mailer->send($message, $failures), '%s: Should return 0');
- $this->assertEquals(array('foo&invalid', 'bar@valid.tld'), $failures, '%s: Failures should contain all addresses since the entire message failed to compile');
+ $this->assertEquals(['foo&invalid', 'bar@valid.tld'], $failures, '%s: Failures should contain all addresses since the entire message failed to compile');
}
public function testRegisterPluginDelegatesToTransport()
{
- $plugin = $this->_createPlugin();
- $transport = $this->_createTransport();
- $mailer = $this->_createMailer($transport);
+ $plugin = $this->createPlugin();
+ $transport = $this->createTransport();
+ $mailer = $this->createMailer($transport);
$transport->shouldReceive('registerPlugin')
->once()
@@ -123,22 +123,22 @@ public function testRegisterPluginDelegatesToTransport()
$mailer->registerPlugin($plugin);
}
- private function _createPlugin()
+ private function createPlugin()
{
return $this->getMockery('Swift_Events_EventListener')->shouldIgnoreMissing();
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockery('Swift_Transport')->shouldIgnoreMissing();
}
- private function _createMessage()
+ private function createMessage()
{
- return $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
+ return $this->getMockery('Swift_Mime_SimpleMessage')->shouldIgnoreMissing();
}
- private function _createMailer(Swift_Transport $transport)
+ private function createMailer(Swift_Transport $transport)
{
return new Swift_Mailer($transport);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MessageTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MessageTest.php
index 35a568c..3ebbd7e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MessageTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/MessageTest.php
@@ -1,6 +1,6 @@
_recursiveObjectCloningCheck($message1, $message2, $message1_clone);
+ $this->recursiveObjectCloningCheck($message1, $message2, $message1_clone);
+ // the test above will fail if the two messages are not identical
+ $this->addToAssertionCount(1);
}
public function testCloningWithSigners()
@@ -21,13 +23,15 @@ public function testCloningWithSigners()
$message2->attachSigner($signer);
$message1_clone = clone $message1;
- $this->_recursiveObjectCloningCheck($message1, $message2, $message1_clone);
+ $this->recursiveObjectCloningCheck($message1, $message2, $message1_clone);
+ // the test above will fail if the two messages are not identical
+ $this->addToAssertionCount(1);
}
public function testBodySwap()
{
$message1 = new Swift_Message('Test');
- $html = Swift_MimePart::newInstance('', 'text/html');
+ $html = new Swift_MimePart('', 'text/html');
$html->getHeaders()->addTextHeader('X-Test-Remove', 'Test-Value');
$html->getHeaders()->addTextHeader('X-Test-Alter', 'Test-Value');
$message1->attach($html);
@@ -54,7 +58,7 @@ public function testBodySwap()
$this->assertNotEquals($id_1, $id_2, 'Message Ids are the same');
}
- protected function _recursiveObjectCloningCheck($obj1, $obj2, $obj1_clone)
+ protected function recursiveObjectCloningCheck($obj1, $obj2, $obj1_clone)
{
$obj1_properties = (array) $obj1;
$obj2_properties = (array) $obj2;
@@ -82,18 +86,18 @@ protected function _recursiveObjectCloningCheck($obj1, $obj2, $obj1_clone)
);
}
// recurse
- $this->_recursiveObjectCloningCheck($obj1_value, $obj2_value, $obj1_clone_value);
+ $this->recursiveObjectCloningCheck($obj1_value, $obj2_value, $obj1_clone_value);
} elseif (is_array($value)) {
$obj1_value = $obj1_properties[$property];
$obj2_value = $obj2_properties[$property];
$obj1_clone_value = $obj1_clone_properties[$property];
- return $this->_recursiveArrayCloningCheck($obj1_value, $obj2_value, $obj1_clone_value);
+ return $this->recursiveArrayCloningCheck($obj1_value, $obj2_value, $obj1_clone_value);
}
}
}
- protected function _recursiveArrayCloningCheck($array1, $array2, $array1_clone)
+ protected function recursiveArrayCloningCheck($array1, $array2, $array1_clone)
{
foreach ($array1 as $key => $value) {
if (is_object($value)) {
@@ -116,13 +120,13 @@ protected function _recursiveArrayCloningCheck($array1, $array2, $array1_clone)
);
}
// recurse
- $this->_recursiveObjectCloningCheck($arr1_value, $arr2_value, $arr1_clone_value);
+ $this->recursiveObjectCloningCheck($arr1_value, $arr2_value, $arr1_clone_value);
} elseif (is_array($value)) {
$arr1_value = $array1[$key];
$arr2_value = $array2[$key];
$arr1_clone_value = $array1_clone[$key];
- return $this->_recursiveArrayCloningCheck($arr1_value, $arr2_value, $arr1_clone_value);
+ return $this->recursiveArrayCloningCheck($arr1_value, $arr2_value, $arr1_clone_value);
}
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AbstractMimeEntityTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AbstractMimeEntityTest.php
index 3efe6ec..c7c2c03 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AbstractMimeEntityTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AbstractMimeEntityTest.php
@@ -6,27 +6,27 @@ abstract class Swift_Mime_AbstractMimeEntityTest extends \SwiftMailerTestCase
{
public function testGetHeadersReturnsHeaderSet()
{
- $headers = $this->_createHeaderSet();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $headers = $this->createHeaderSet();
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$this->assertSame($headers, $entity->getHeaders());
}
public function testContentTypeIsReturnedFromHeader()
{
- $ctype = $this->_createHeader('Content-Type', 'image/jpeg-test');
- $headers = $this->_createHeaderSet(array('Content-Type' => $ctype));
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $ctype = $this->createHeader('Content-Type', 'image/jpeg-test');
+ $headers = $this->createHeaderSet(['Content-Type' => $ctype]);
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$this->assertEquals('image/jpeg-test', $entity->getContentType());
}
public function testContentTypeIsSetInHeader()
{
- $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false);
- $headers = $this->_createHeaderSet(array('Content-Type' => $ctype));
+ $ctype = $this->createHeader('Content-Type', 'text/plain', [], false);
+ $headers = $this->createHeaderSet(['Content-Type' => $ctype]);
$ctype->shouldReceive('setFieldBodyModel')
->once()
@@ -35,57 +35,57 @@ public function testContentTypeIsSetInHeader()
->zeroOrMoreTimes()
->with(\Mockery::not('image/jpeg'));
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setContentType('image/jpeg');
}
public function testContentTypeHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addParameterizedHeader')
->once()
->with('Content-Type', 'image/jpeg');
$headers->shouldReceive('addParameterizedHeader')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setContentType('image/jpeg');
}
public function testContentTypeCanBeSetViaSetBody()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addParameterizedHeader')
->once()
->with('Content-Type', 'text/html');
$headers->shouldReceive('addParameterizedHeader')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBody('foo', 'text/html');
}
public function testGetEncoderFromConstructor()
{
- $encoder = $this->_createEncoder('base64');
- $entity = $this->_createEntity($this->_createHeaderSet(), $encoder,
- $this->_createCache()
+ $encoder = $this->createEncoder('base64');
+ $entity = $this->createEntity($this->createHeaderSet(), $encoder,
+ $this->createCache()
);
$this->assertSame($encoder, $entity->getEncoder());
}
public function testSetAndGetEncoder()
{
- $encoder = $this->_createEncoder('base64');
- $headers = $this->_createHeaderSet();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $encoder = $this->createEncoder('base64');
+ $headers = $this->createHeaderSet();
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setEncoder($encoder);
$this->assertSame($encoder, $entity->getEncoder());
@@ -93,38 +93,38 @@ public function testSetAndGetEncoder()
public function testSettingEncoderUpdatesTransferEncoding()
{
- $encoder = $this->_createEncoder('base64');
- $encoding = $this->_createHeader(
- 'Content-Transfer-Encoding', '8bit', array(), false
+ $encoder = $this->createEncoder('base64');
+ $encoding = $this->createHeader(
+ 'Content-Transfer-Encoding', '8bit', [], false
);
- $headers = $this->_createHeaderSet(array(
+ $headers = $this->createHeaderSet([
'Content-Transfer-Encoding' => $encoding,
- ));
+ ]);
$encoding->shouldReceive('setFieldBodyModel')
->once()
->with('base64');
$encoding->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setEncoder($encoder);
}
public function testSettingEncoderAddsEncodingHeaderIfNonePresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addTextHeader')
->once()
->with('Content-Transfer-Encoding', 'something');
$headers->shouldReceive('addTextHeader')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
- $entity->setEncoder($this->_createEncoder('something'));
+ $entity->setEncoder($this->createEncoder('something'));
}
public function testIdIsReturnedFromHeader()
@@ -136,18 +136,18 @@ public function testIdIsReturnedFromHeader()
identical to the "Message-ID" header field
*/
- $cid = $this->_createHeader('Content-ID', 'zip@button');
- $headers = $this->_createHeaderSet(array('Content-ID' => $cid));
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $cid = $this->createHeader('Content-ID', 'zip@button');
+ $headers = $this->createHeaderSet(['Content-ID' => $cid]);
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$this->assertEquals('zip@button', $entity->getId());
}
public function testIdIsSetInHeader()
{
- $cid = $this->_createHeader('Content-ID', 'zip@button', array(), false);
- $headers = $this->_createHeaderSet(array('Content-ID' => $cid));
+ $cid = $this->createHeader('Content-ID', 'zip@button', [], false);
+ $headers = $this->createHeaderSet(['Content-ID' => $cid]);
$cid->shouldReceive('setFieldBodyModel')
->once()
@@ -155,25 +155,25 @@ public function testIdIsSetInHeader()
$cid->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setId('foo@bar');
}
public function testIdIsAutoGenerated()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertRegExp('/^.*?@.*?$/D', $entity->getId());
}
public function testGenerateIdCreatesNewId()
{
- $headers = $this->_createHeaderSet();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $headers = $this->createHeaderSet();
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$id1 = $entity->generateId();
$id2 = $entity->generateId();
@@ -182,9 +182,9 @@ public function testGenerateIdCreatesNewId()
public function testGenerateIdSetsNewId()
{
- $headers = $this->_createHeaderSet();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $headers = $this->createHeaderSet();
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$id = $entity->generateId();
$this->assertEquals($id, $entity->getId());
@@ -200,46 +200,46 @@ public function testDescriptionIsReadFromHeader()
field is always optional.
*/
- $desc = $this->_createHeader('Content-Description', 'something');
- $headers = $this->_createHeaderSet(array('Content-Description' => $desc));
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $desc = $this->createHeader('Content-Description', 'something');
+ $headers = $this->createHeaderSet(['Content-Description' => $desc]);
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$this->assertEquals('something', $entity->getDescription());
}
public function testDescriptionIsSetInHeader()
{
- $desc = $this->_createHeader('Content-Description', '', array(), false);
+ $desc = $this->createHeader('Content-Description', '', [], false);
$desc->shouldReceive('setFieldBodyModel')->once()->with('whatever');
- $headers = $this->_createHeaderSet(array('Content-Description' => $desc));
+ $headers = $this->createHeaderSet(['Content-Description' => $desc]);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setDescription('whatever');
}
public function testDescriptionHeaderIsAddedIfNotPresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addTextHeader')
->once()
->with('Content-Description', 'whatever');
$headers->shouldReceive('addTextHeader')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setDescription('whatever');
}
public function testSetAndGetMaxLineLength()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$entity->setMaxLineLength(60);
$this->assertEquals(60, $entity->getMaxLineLength());
@@ -247,13 +247,13 @@ public function testSetAndGetMaxLineLength()
public function testEncoderIsUsedForStringGeneration()
{
- $encoder = $this->_createEncoder('base64', false);
+ $encoder = $this->createEncoder('base64', false);
$encoder->expects($this->once())
->method('encodeString')
->with('blah');
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $encoder, $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $encoder, $this->createCache()
);
$entity->setBody('blah');
$entity->toString();
@@ -261,13 +261,13 @@ public function testEncoderIsUsedForStringGeneration()
public function testMaxLineLengthIsProvidedWhenEncoding()
{
- $encoder = $this->_createEncoder('base64', false);
+ $encoder = $this->createEncoder('base64', false);
$encoder->expects($this->once())
->method('encodeString')
->with('blah', 0, 65);
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $encoder, $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $encoder, $this->createCache()
);
$entity->setBody('blah');
$entity->setMaxLineLength(65);
@@ -276,7 +276,7 @@ public function testMaxLineLengthIsProvidedWhenEncoding()
public function testHeadersAppearInString()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->once()
->andReturn(
@@ -284,8 +284,8 @@ public function testHeadersAppearInString()
"X-MyHeader: foobar\r\n"
);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$this->assertEquals(
"Content-Type: text/plain; charset=utf-8\r\n".
@@ -296,8 +296,8 @@ public function testHeadersAppearInString()
public function testSetAndGetBody()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$entity->setBody("blah\r\nblah!");
$this->assertEquals("blah\r\nblah!", $entity->getBody());
@@ -305,13 +305,13 @@ public function testSetAndGetBody()
public function testBodyIsAppended()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->once()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBody("blah\r\nblah!");
$this->assertEquals(
@@ -324,9 +324,9 @@ public function testBodyIsAppended()
public function testGetBodyReturnsStringFromByteStream()
{
- $os = $this->_createOutputStream('byte stream string');
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $os = $this->createOutputStream('byte stream string');
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$entity->setBody($os);
$this->assertEquals('byte stream string', $entity->getBody());
@@ -334,14 +334,14 @@ public function testGetBodyReturnsStringFromByteStream()
public function testByteStreamBodyIsAppended()
{
- $headers = $this->_createHeaderSet(array(), false);
- $os = $this->_createOutputStream('streamed');
+ $headers = $this->createHeaderSet([], false);
+ $os = $this->createOutputStream('streamed');
$headers->shouldReceive('toString')
->once()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBody($os);
$this->assertEquals(
@@ -364,8 +364,8 @@ public function testBoundaryCanBeRetrieved()
"/" / ":" / "=" / "?"
*/
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertRegExp(
'/^[a-zA-Z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-zA-Z0-9\'\(\)\+_\-,\.\/:=\?]$/D',
@@ -375,8 +375,8 @@ public function testBoundaryCanBeRetrieved()
public function testBoundaryNeverChanges()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$firstBoundary = $entity->getBoundary();
for ($i = 0; $i < 10; ++$i) {
@@ -386,8 +386,8 @@ public function testBoundaryNeverChanges()
public function testBoundaryCanBeSet()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$entity->setBoundary('foobar');
$this->assertEquals('foobar', $entity->getBoundary());
@@ -395,29 +395,29 @@ public function testBoundaryCanBeSet()
public function testAddingChildrenGeneratesBoundaryInHeaders()
{
- $child = $this->_createChild();
- $cType = $this->_createHeader('Content-Type', 'text/plain', array(), false);
+ $child = $this->createChild();
+ $cType = $this->createHeader('Content-Type', 'text/plain', [], false);
$cType->shouldReceive('setParameter')
->once()
->with('boundary', \Mockery::any());
$cType->shouldReceive('setParameter')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($this->_createHeaderSet(array(
+ $entity = $this->createEntity($this->createHeaderSet([
'Content-Type' => $cType,
- )),
- $this->_createEncoder(), $this->_createCache()
+ ]),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
}
public function testChildrenOfLevelAttachmentAndLessCauseMultipartMixed()
{
- for ($level = Swift_Mime_MimeEntity::LEVEL_MIXED;
- $level > Swift_Mime_MimeEntity::LEVEL_TOP; $level /= 2) {
- $child = $this->_createChild($level);
- $cType = $this->_createHeader(
- 'Content-Type', 'text/plain', array(), false
+ for ($level = Swift_Mime_SimpleMimeEntity::LEVEL_MIXED;
+ $level > Swift_Mime_SimpleMimeEntity::LEVEL_TOP; $level /= 2) {
+ $child = $this->createChild($level);
+ $cType = $this->createHeader(
+ 'Content-Type', 'text/plain', [], false
);
$cType->shouldReceive('setFieldBodyModel')
->once()
@@ -425,21 +425,21 @@ public function testChildrenOfLevelAttachmentAndLessCauseMultipartMixed()
$cType->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
}
}
public function testChildrenOfLevelAlternativeAndLessCauseMultipartAlternative()
{
- for ($level = Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE;
- $level > Swift_Mime_MimeEntity::LEVEL_MIXED; $level /= 2) {
- $child = $this->_createChild($level);
- $cType = $this->_createHeader(
- 'Content-Type', 'text/plain', array(), false
+ for ($level = Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE;
+ $level > Swift_Mime_SimpleMimeEntity::LEVEL_MIXED; $level /= 2) {
+ $child = $this->createChild($level);
+ $cType = $this->createHeader(
+ 'Content-Type', 'text/plain', [], false
);
$cType->shouldReceive('setFieldBodyModel')
->once()
@@ -447,21 +447,21 @@ public function testChildrenOfLevelAlternativeAndLessCauseMultipartAlternative()
$cType->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
}
}
public function testChildrenOfLevelRelatedAndLessCauseMultipartRelated()
{
- for ($level = Swift_Mime_MimeEntity::LEVEL_RELATED;
- $level > Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE; $level /= 2) {
- $child = $this->_createChild($level);
- $cType = $this->_createHeader(
- 'Content-Type', 'text/plain', array(), false
+ for ($level = Swift_Mime_SimpleMimeEntity::LEVEL_RELATED;
+ $level > Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE; $level /= 2) {
+ $child = $this->createChild($level);
+ $cType = $this->createHeader(
+ 'Content-Type', 'text/plain', [], false
);
$cType->shouldReceive('setFieldBodyModel')
->once()
@@ -469,61 +469,61 @@ public function testChildrenOfLevelRelatedAndLessCauseMultipartRelated()
$cType->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $entity = $this->_createEntity($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
}
}
public function testHighestLevelChildDeterminesContentType()
{
- $combinations = array(
- array('levels' => array(Swift_Mime_MimeEntity::LEVEL_MIXED,
- Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
- Swift_Mime_MimeEntity::LEVEL_RELATED,
- ),
+ $combinations = [
+ ['levels' => [Swift_Mime_SimpleMimeEntity::LEVEL_MIXED,
+ Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
+ Swift_Mime_SimpleMimeEntity::LEVEL_RELATED,
+ ],
'type' => 'multipart/mixed',
- ),
- array('levels' => array(Swift_Mime_MimeEntity::LEVEL_MIXED,
- Swift_Mime_MimeEntity::LEVEL_RELATED,
- ),
+ ],
+ ['levels' => [Swift_Mime_SimpleMimeEntity::LEVEL_MIXED,
+ Swift_Mime_SimpleMimeEntity::LEVEL_RELATED,
+ ],
'type' => 'multipart/mixed',
- ),
- array('levels' => array(Swift_Mime_MimeEntity::LEVEL_MIXED,
- Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
- ),
+ ],
+ ['levels' => [Swift_Mime_SimpleMimeEntity::LEVEL_MIXED,
+ Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
+ ],
'type' => 'multipart/mixed',
- ),
- array('levels' => array(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
- Swift_Mime_MimeEntity::LEVEL_RELATED,
- ),
+ ],
+ ['levels' => [Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
+ Swift_Mime_SimpleMimeEntity::LEVEL_RELATED,
+ ],
'type' => 'multipart/alternative',
- ),
- );
+ ],
+ ];
foreach ($combinations as $combination) {
- $children = array();
+ $children = [];
foreach ($combination['levels'] as $level) {
- $children[] = $this->_createChild($level);
+ $children[] = $this->createChild($level);
}
- $cType = $this->_createHeader(
- 'Content-Type', 'text/plain', array(), false
+ $cType = $this->createHeader(
+ 'Content-Type', 'text/plain', [], false
);
$cType->shouldReceive('setFieldBodyModel')
->once()
->with($combination['type']);
- $headerSet = $this->_createHeaderSet(array('Content-Type' => $cType));
+ $headerSet = $this->createHeaderSet(['Content-Type' => $cType]);
$headerSet->shouldReceive('newInstance')
->zeroOrMoreTimes()
->andReturnUsing(function () use ($headerSet) {
return $headerSet;
});
- $entity = $this->_createEntity($headerSet,
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($headerSet,
+ $this->createEncoder(), $this->createCache()
);
$entity->setChildren($children);
}
@@ -535,15 +535,15 @@ public function testChildrenAppearNestedInString()
(excerpt too verbose to paste here)
*/
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
- $child1 = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $child1 = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/plain\r\n".
"\r\n".
'foobar', 'text/plain'
);
- $child2 = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $child2 = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/html\r\n".
"\r\n".
'foobar', 'text/html'
@@ -553,11 +553,11 @@ public function testChildrenAppearNestedInString()
->zeroOrMoreTimes()
->andReturn("Content-Type: multipart/alternative; boundary=\"xxx\"\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBoundary('xxx');
- $entity->setChildren(array($child1, $child2));
+ $entity->setChildren([$child1, $child2]);
$this->assertEquals(
"Content-Type: multipart/alternative; boundary=\"xxx\"\r\n".
@@ -577,16 +577,16 @@ public function testChildrenAppearNestedInString()
public function testMixingLevelsIsHierarchical()
{
- $headers = $this->_createHeaderSet(array(), false);
- $newHeaders = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
+ $newHeaders = $this->createHeaderSet([], false);
- $part = $this->_createChild(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $part = $this->createChild(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/plain\r\n".
"\r\n".
'foobar'
);
- $attachment = $this->_createChild(Swift_Mime_MimeEntity::LEVEL_MIXED,
+ $attachment = $this->createChild(Swift_Mime_SimpleMimeEntity::LEVEL_MIXED,
"Content-Type: application/octet-stream\r\n".
"\r\n".
'data'
@@ -602,11 +602,11 @@ public function testMixingLevelsIsHierarchical()
->zeroOrMoreTimes()
->andReturn("Content-Type: multipart/alternative; boundary=\"yyy\"\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBoundary('xxx');
- $entity->setChildren(array($part, $attachment));
+ $entity->setChildren([$part, $attachment]);
$this->assertRegExp(
'~^'.
@@ -630,56 +630,56 @@ public function testMixingLevelsIsHierarchical()
public function testSettingEncoderNotifiesChildren()
{
- $child = $this->_createChild(0, '', false);
- $encoder = $this->_createEncoder('base64');
+ $child = $this->createChild(0, '', false);
+ $encoder = $this->createEncoder('base64');
$child->shouldReceive('encoderChanged')
->once()
->with($encoder);
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
$entity->setEncoder($encoder);
}
public function testReceiptOfEncoderChangeNotifiesChildren()
{
- $child = $this->_createChild(0, '', false);
- $encoder = $this->_createEncoder('base64');
+ $child = $this->createChild(0, '', false);
+ $encoder = $this->createEncoder('base64');
$child->shouldReceive('encoderChanged')
->once()
->with($encoder);
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
$entity->encoderChanged($encoder);
}
public function testReceiptOfCharsetChangeNotifiesChildren()
{
- $child = $this->_createChild(0, '', false);
+ $child = $this->createChild(0, '', false);
$child->shouldReceive('charsetChanged')
->once()
->with('windows-874');
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $entity->setChildren(array($child));
+ $entity->setChildren([$child]);
$entity->charsetChanged('windows-874');
}
public function testEntityIsWrittenToByteStream()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $is = $this->_createInputStream(false);
+ $is = $this->createInputStream(false);
$is->expects($this->atLeastOnce())
->method('write');
@@ -688,10 +688,10 @@ public function testEntityIsWrittenToByteStream()
public function testEntityHeadersAreComittedToByteStream()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $is = $this->_createInputStream(false);
+ $is = $this->createInputStream(false);
$is->expects($this->atLeastOnce())
->method('write');
$is->expects($this->atLeastOnce())
@@ -702,28 +702,28 @@ public function testEntityHeadersAreComittedToByteStream()
public function testOrderingTextBeforeHtml()
{
- $htmlChild = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $htmlChild = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/html\r\n".
"\r\n".
'HTML PART',
'text/html'
);
- $textChild = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $textChild = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/plain\r\n".
"\r\n".
'TEXT PART',
'text/plain'
);
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: multipart/alternative; boundary=\"xxx\"\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBoundary('xxx');
- $entity->setChildren(array($htmlChild, $textChild));
+ $entity->setChildren([$htmlChild, $textChild]);
$this->assertEquals(
"Content-Type: multipart/alternative; boundary=\"xxx\"\r\n".
@@ -742,28 +742,28 @@ public function testOrderingTextBeforeHtml()
public function testOrderingEqualContentTypesMaintainsOriginalOrdering()
{
- $firstChild = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $firstChild = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/plain\r\n".
"\r\n".
'PART 1',
'text/plain'
);
- $secondChild = new MimeEntityFixture(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE,
+ $secondChild = new MimeEntityFixture(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE,
"Content-Type: text/plain\r\n".
"\r\n".
'PART 2',
'text/plain'
);
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: multipart/alternative; boundary=\"xxx\"\r\n");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
- $this->_createCache()
+ $entity = $this->createEntity($headers, $this->createEncoder(),
+ $this->createCache()
);
$entity->setBoundary('xxx');
- $entity->setChildren(array($firstChild, $secondChild));
+ $entity->setChildren([$firstChild, $secondChild]);
$this->assertEquals(
"Content-Type: multipart/alternative; boundary=\"xxx\"\r\n".
@@ -782,8 +782,8 @@ public function testOrderingEqualContentTypesMaintainsOriginalOrdering()
public function testUnsettingChildrenRestoresContentType()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain', array(), false);
- $child = $this->_createChild(Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE);
+ $cType = $this->createHeader('Content-Type', 'text/plain', [], false);
+ $child = $this->createChild(Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE);
$cType->shouldReceive('setFieldBodyModel')
->twice()
@@ -795,25 +795,25 @@ public function testUnsettingChildrenRestoresContentType()
->zeroOrMoreTimes()
->with(\Mockery::not('multipart/alternative', 'image/jpeg'));
- $entity = $this->_createEntity($this->_createHeaderSet(array(
+ $entity = $this->createEntity($this->createHeaderSet([
'Content-Type' => $cType,
- )),
- $this->_createEncoder(), $this->_createCache()
+ ]),
+ $this->createEncoder(), $this->createCache()
);
$entity->setContentType('image/jpeg');
- $entity->setChildren(array($child));
- $entity->setChildren(array());
+ $entity->setChildren([$child]);
+ $entity->setChildren([]);
}
public function testBodyIsReadFromCacheWhenUsingToStringIfPresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
+ $cache = $this->createCache(false);
$cache->shouldReceive('hasKey')
->once()
->with(\Mockery::any(), 'body')
@@ -823,7 +823,7 @@ public function testBodyIsReadFromCacheWhenUsingToStringIfPresent()
->with(\Mockery::any(), 'body')
->andReturn("\r\ncache\r\ncache!");
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -838,12 +838,12 @@ public function testBodyIsReadFromCacheWhenUsingToStringIfPresent()
public function testBodyIsAddedToCacheWhenUsingToString()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
+ $cache = $this->createCache(false);
$cache->shouldReceive('hasKey')
->once()
->with(\Mockery::any(), 'body')
@@ -852,7 +852,7 @@ public function testBodyIsAddedToCacheWhenUsingToString()
->once()
->with(\Mockery::any(), 'body', "\r\nblah\r\nblah!", Swift_KeyCache::MODE_WRITE);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -862,13 +862,13 @@ public function testBodyIsAddedToCacheWhenUsingToString()
public function testBodyIsClearedFromCacheIfNewBodySet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $cache = $this->createCache(false);
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -885,13 +885,13 @@ public function testBodyIsClearedFromCacheIfNewBodySet()
public function testBodyIsNotClearedFromCacheIfSameBodySet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $cache = $this->createCache(false);
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -907,14 +907,14 @@ public function testBodyIsNotClearedFromCacheIfSameBodySet()
public function testBodyIsClearedFromCacheIfNewEncoderSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
- $otherEncoder = $this->_createEncoder();
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $cache = $this->createCache(false);
+ $otherEncoder = $this->createEncoder();
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -931,8 +931,8 @@ public function testBodyIsClearedFromCacheIfNewEncoderSet()
public function testBodyIsReadFromCacheWhenUsingToByteStreamIfPresent()
{
- $is = $this->_createInputStream();
- $cache = $this->_createCache(false);
+ $is = $this->createInputStream();
+ $cache = $this->createCache(false);
$cache->shouldReceive('hasKey')
->once()
->with(\Mockery::any(), 'body')
@@ -941,8 +941,8 @@ public function testBodyIsReadFromCacheWhenUsingToByteStreamIfPresent()
->once()
->with(\Mockery::any(), 'body', $is);
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $cache
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $cache
);
$entity->setBody('foo');
@@ -951,8 +951,8 @@ public function testBodyIsReadFromCacheWhenUsingToByteStreamIfPresent()
public function testBodyIsAddedToCacheWhenUsingToByteStream()
{
- $is = $this->_createInputStream();
- $cache = $this->_createCache(false);
+ $is = $this->createInputStream();
+ $cache = $this->createCache(false);
$cache->shouldReceive('hasKey')
->once()
->with(\Mockery::any(), 'body')
@@ -961,8 +961,8 @@ public function testBodyIsAddedToCacheWhenUsingToByteStream()
->once()
->with(\Mockery::any(), 'body');
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $cache
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $cache
);
$entity->setBody('foo');
@@ -971,28 +971,28 @@ public function testBodyIsAddedToCacheWhenUsingToByteStream()
public function testFluidInterface()
{
- $entity = $this->_createEntity($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $entity = $this->createEntity($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertSame($entity,
$entity
->setContentType('text/plain')
- ->setEncoder($this->_createEncoder())
+ ->setEncoder($this->createEncoder())
->setId('foo@bar')
->setDescription('my description')
->setMaxLineLength(998)
->setBody('xx')
->setBoundary('xyz')
- ->setChildren(array())
+ ->setChildren([])
);
}
- abstract protected function _createEntity($headers, $encoder, $cache);
+ abstract protected function createEntity($headers, $encoder, $cache);
- protected function _createChild($level = null, $string = '', $stub = true)
+ protected function createChild($level = null, $string = '', $stub = true)
{
- $child = $this->getMockery('Swift_Mime_MimeEntity')->shouldIgnoreMissing();
+ $child = $this->getMockery('Swift_Mime_SimpleMimeEntity')->shouldIgnoreMissing();
if (isset($level)) {
$child->shouldReceive('getNestingLevel')
->zeroOrMoreTimes()
@@ -1005,7 +1005,7 @@ protected function _createChild($level = null, $string = '', $stub = true)
return $child;
}
- protected function _createEncoder($name = 'quoted-printable', $stub = true)
+ protected function createEncoder($name = 'quoted-printable', $stub = true)
{
$encoder = $this->getMockBuilder('Swift_Mime_ContentEncoder')->getMock();
$encoder->expects($this->any())
@@ -1022,14 +1022,14 @@ protected function _createEncoder($name = 'quoted-printable', $stub = true)
return $encoder;
}
- protected function _createCache($stub = true)
+ protected function createCache($stub = true)
{
return $this->getMockery('Swift_KeyCache')->shouldIgnoreMissing();
}
- protected function _createHeaderSet($headers = array(), $stub = true)
+ protected function createHeaderSet($headers = [], $stub = true)
{
- $set = $this->getMockery('Swift_Mime_HeaderSet')->shouldIgnoreMissing();
+ $set = $this->getMockery('Swift_Mime_SimpleHeaderSet')->shouldIgnoreMissing();
$set->shouldReceive('get')
->zeroOrMoreTimes()
->andReturnUsing(function ($key) use ($headers) {
@@ -1044,9 +1044,9 @@ protected function _createHeaderSet($headers = array(), $stub = true)
return $set;
}
- protected function _createHeader($name, $model = null, $params = array(), $stub = true)
+ protected function createHeader($name, $model = null, $params = [], $stub = true)
{
- $header = $this->getMockery('Swift_Mime_ParameterizedHeader')->shouldIgnoreMissing();
+ $header = $this->getMockery('Swift_Mime_Headers_ParameterizedHeader')->shouldIgnoreMissing();
$header->shouldReceive('getFieldName')
->zeroOrMoreTimes()
->andReturn($name);
@@ -1062,7 +1062,7 @@ protected function _createHeader($name, $model = null, $params = array(), $stub
return $header;
}
- protected function _createOutputStream($data = null, $stub = true)
+ protected function createOutputStream($data = null, $stub = true)
{
$os = $this->getMockery('Swift_OutputByteStream');
if (isset($data)) {
@@ -1085,7 +1085,7 @@ protected function _createOutputStream($data = null, $stub = true)
return $os;
}
- protected function _createInputStream($stub = true)
+ protected function createInputStream($stub = true)
{
return $this->getMockBuilder('Swift_InputByteStream')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AttachmentTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AttachmentTest.php
index 2c1e581..912d529 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AttachmentTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/AttachmentTest.php
@@ -1,14 +1,15 @@
_createAttachment($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(
- Swift_Mime_MimeEntity::LEVEL_MIXED, $attachment->getNestingLevel()
+ Swift_Mime_SimpleMimeEntity::LEVEL_MIXED, $attachment->getNestingLevel()
);
}
@@ -17,18 +18,18 @@ public function testDispositionIsReturnedFromHeader()
/* -- RFC 2183, 2.1, 2.2.
*/
- $disposition = $this->_createHeader('Content-Disposition', 'attachment');
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $disposition = $this->createHeader('Content-Disposition', 'attachment');
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('attachment', $attachment->getDisposition());
}
public function testDispositionIsSetInHeader()
{
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array(), false
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ [], false
);
$disposition->shouldReceive('setFieldBodyModel')
->once()
@@ -36,46 +37,46 @@ public function testDispositionIsSetInHeader()
$disposition->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setDisposition('inline');
}
public function testDispositionIsAddedIfNonePresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addParameterizedHeader')
->once()
->with('Content-Disposition', 'inline');
$headers->shouldReceive('addParameterizedHeader')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
- $this->_createCache()
+ $attachment = $this->createAttachment($headers, $this->createEncoder(),
+ $this->createCache()
);
$attachment->setDisposition('inline');
}
public function testDispositionIsAutoDefaultedToAttachment()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addParameterizedHeader')
->once()
->with('Content-Disposition', 'attachment');
$headers->shouldReceive('addParameterizedHeader')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
- $this->_createCache()
+ $attachment = $this->createAttachment($headers, $this->createEncoder(),
+ $this->createCache()
);
}
public function testDefaultContentTypeInitializedToOctetStream()
{
- $cType = $this->_createHeader('Content-Type', '',
- array(), false
+ $cType = $this->createHeader('Content-Type', '',
+ [], false
);
$cType->shouldReceive('setFieldBodyModel')
->once()
@@ -83,9 +84,9 @@ public function testDefaultContentTypeInitializedToOctetStream()
$cType->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
}
@@ -94,20 +95,20 @@ public function testFilenameIsReturnedFromHeader()
/* -- RFC 2183, 2.3.
*/
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('filename' => 'foo.txt')
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['filename' => 'foo.txt']
);
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('foo.txt', $attachment->getFilename());
}
public function testFilenameIsSetInHeader()
{
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('filename' => 'foo.txt'), false
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['filename' => 'foo.txt'], false
);
$disposition->shouldReceive('setParameter')
->once()
@@ -115,9 +116,9 @@ public function testFilenameIsSetInHeader()
$disposition->shouldReceive('setParameter')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setFilename('bar.txt');
}
@@ -128,8 +129,8 @@ public function testSettingFilenameSetsNameInContentType()
This is a legacy requirement which isn't covered by up-to-date RFCs.
*/
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array(), false
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ [], false
);
$cType->shouldReceive('setParameter')
->once()
@@ -137,9 +138,9 @@ public function testSettingFilenameSetsNameInContentType()
$cType->shouldReceive('setParameter')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setFilename('bar.txt');
}
@@ -149,20 +150,20 @@ public function testSizeIsReturnedFromHeader()
/* -- RFC 2183, 2.7.
*/
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('size' => 1234)
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['size' => 1234]
);
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(1234, $attachment->getSize());
}
public function testSizeIsSetInHeader()
{
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array(), false
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ [], false
);
$disposition->shouldReceive('setParameter')
->once()
@@ -170,91 +171,91 @@ public function testSizeIsSetInHeader()
$disposition->shouldReceive('setParameter')
->zeroOrMoreTimes();
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setSize(12345);
}
public function testFilnameCanBeReadFromFileStream()
{
- $file = $this->_createFileStream('/bar/file.ext', '');
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('filename' => 'foo.txt'), false
+ $file = $this->createFileStream('/bar/file.ext', '');
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['filename' => 'foo.txt'], false
);
$disposition->shouldReceive('setParameter')
->once()
->with('filename', 'file.ext');
- $attachment = $this->_createAttachment($this->_createHeaderSet(array(
- 'Content-Disposition' => $disposition, )),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet([
+ 'Content-Disposition' => $disposition, ]),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setFile($file);
}
public function testContentTypeCanBeSetViaSetFile()
{
- $file = $this->_createFileStream('/bar/file.ext', '');
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('filename' => 'foo.txt'), false
+ $file = $this->createFileStream('/bar/file.ext', '');
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['filename' => 'foo.txt'], false
);
$disposition->shouldReceive('setParameter')
->once()
->with('filename', 'file.ext');
- $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false);
+ $ctype = $this->createHeader('Content-Type', 'text/plain', [], false);
$ctype->shouldReceive('setFieldBodyModel')
->once()
->with('text/html');
$ctype->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $headers = $this->_createHeaderSet(array(
+ $headers = $this->createHeaderSet([
'Content-Disposition' => $disposition,
'Content-Type' => $ctype,
- ));
+ ]);
- $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
- $this->_createCache()
+ $attachment = $this->createAttachment($headers, $this->createEncoder(),
+ $this->createCache()
);
$attachment->setFile($file, 'text/html');
}
public function XtestContentTypeCanBeLookedUpFromCommonListIfNotProvided()
{
- $file = $this->_createFileStream('/bar/file.zip', '');
- $disposition = $this->_createHeader('Content-Disposition', 'attachment',
- array('filename' => 'foo.zip'), false
+ $file = $this->createFileStream('/bar/file.zip', '');
+ $disposition = $this->createHeader('Content-Disposition', 'attachment',
+ ['filename' => 'foo.zip'], false
);
$disposition->shouldReceive('setParameter')
->once()
->with('filename', 'file.zip');
- $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false);
+ $ctype = $this->createHeader('Content-Type', 'text/plain', [], false);
$ctype->shouldReceive('setFieldBodyModel')
->once()
->with('application/zip');
$ctype->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $headers = $this->_createHeaderSet(array(
+ $headers = $this->createHeaderSet([
'Content-Disposition' => $disposition,
'Content-Type' => $ctype,
- ));
+ ]);
- $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
- $this->_createCache(), array('zip' => 'application/zip', 'txt' => 'text/plain')
+ $attachment = $this->createAttachment($headers, $this->createEncoder(),
+ $this->createCache(), ['zip' => 'application/zip', 'txt' => 'text/plain']
);
$attachment->setFile($file);
}
public function testDataCanBeReadFromFile()
{
- $file = $this->_createFileStream('/foo/file.ext', '');
- $attachment = $this->_createAttachment($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $file = $this->createFileStream('/foo/file.ext', '');
+ $attachment = $this->createAttachment($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$attachment->setFile($file);
$this->assertEquals('', $attachment->getBody());
@@ -262,37 +263,39 @@ public function testDataCanBeReadFromFile()
public function testFluidInterface()
{
- $attachment = $this->_createAttachment($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $attachment = $this->createAttachment($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertSame($attachment,
$attachment
->setContentType('application/pdf')
- ->setEncoder($this->_createEncoder())
+ ->setEncoder($this->createEncoder())
->setId('foo@bar')
->setDescription('my pdf')
->setMaxLineLength(998)
->setBody('xx')
->setBoundary('xyz')
- ->setChildren(array())
+ ->setChildren([])
->setDisposition('inline')
->setFilename('afile.txt')
->setSize(123)
- ->setFile($this->_createFileStream('foo.txt', ''))
+ ->setFile($this->createFileStream('foo.txt', ''))
);
}
- protected function _createEntity($headers, $encoder, $cache)
+ protected function createEntity($headers, $encoder, $cache)
{
- return $this->_createAttachment($headers, $encoder, $cache);
+ return $this->createAttachment($headers, $encoder, $cache);
}
- protected function _createAttachment($headers, $encoder, $cache, $mimeTypes = array())
+ protected function createAttachment($headers, $encoder, $cache, $mimeTypes = [])
{
- return new Swift_Mime_Attachment($headers, $encoder, $cache, new Swift_Mime_Grammar(), $mimeTypes);
+ $idGenerator = new Swift_Mime_IdGenerator('example.com');
+
+ return new Swift_Mime_Attachment($headers, $encoder, $cache, $idGenerator, $mimeTypes);
}
- protected function _createFileStream($path, $data, $stub = true)
+ protected function createFileStream($path, $data, $stub = true)
{
$file = $this->getMockery('Swift_FileStream');
$file->shouldReceive('getPath')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/Base64ContentEncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/Base64ContentEncoderTest.php
index 1571fce..a05c68a 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/Base64ContentEncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/Base64ContentEncoderTest.php
@@ -2,16 +2,16 @@
class Swift_Mime_ContentEncoder_Base64ContentEncoderTest extends \SwiftMailerTestCase
{
- private $_encoder;
+ private $encoder;
protected function setUp()
{
- $this->_encoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
+ $this->encoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
}
public function testNameIsBase64()
{
- $this->assertEquals('base64', $this->_encoder->getName());
+ $this->assertEquals('base64', $this->encoder->getName());
}
/*
@@ -32,8 +32,8 @@ public function testInputOutputRatioIs3to4Bytes()
of which is translated into a single digit in the base64 alphabet.
*/
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -46,7 +46,7 @@ public function testInputOutputRatioIs3to4Bytes()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$this->assertEquals('MTIz', $collection->content);
}
@@ -73,8 +73,8 @@ public function testPadLength()
*/
for ($i = 0; $i < 30; ++$i) {
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -82,20 +82,20 @@ public function testPadLength()
->andReturnUsing($collection);
$os->shouldReceive('read')
->once()
- ->andReturn(pack('C', rand(0, 255)));
+ ->andReturn(pack('C', random_int(0, 255)));
$os->shouldReceive('read')
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$this->assertRegExp('~^[a-zA-Z0-9/\+]{2}==$~', $collection->content,
'%s: A single byte should have 2 bytes of padding'
);
}
for ($i = 0; $i < 30; ++$i) {
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -103,20 +103,20 @@ public function testPadLength()
->andReturnUsing($collection);
$os->shouldReceive('read')
->once()
- ->andReturn(pack('C*', rand(0, 255), rand(0, 255)));
+ ->andReturn(pack('C*', random_int(0, 255), random_int(0, 255)));
$os->shouldReceive('read')
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$this->assertRegExp('~^[a-zA-Z0-9/\+]{3}=$~', $collection->content,
'%s: Two bytes should have 1 byte of padding'
);
}
for ($i = 0; $i < 30; ++$i) {
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -124,12 +124,12 @@ public function testPadLength()
->andReturnUsing($collection);
$os->shouldReceive('read')
->once()
- ->andReturn(pack('C*', rand(0, 255), rand(0, 255), rand(0, 255)));
+ ->andReturn(pack('C*', random_int(0, 255), random_int(0, 255), random_int(0, 255)));
$os->shouldReceive('read')
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$this->assertRegExp('~^[a-zA-Z0-9/\+]{4}$~', $collection->content,
'%s: Three bytes should have no padding'
);
@@ -144,8 +144,8 @@ public function testMaximumLineLengthIs76Characters()
found in Table 1 must be ignored by decoding software.
*/
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -176,7 +176,7 @@ public function testMaximumLineLengthIs76Characters()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is);
+ $this->encoder->encodeByteStream($os, $is);
$this->assertEquals(
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmMxMjM0NTY3ODkwQUJDREVGR0hJSktMTU5PUFFS\r\n".
'U1RVVldYWVoxMjM0NTY3YWJjZGVmZ2hpamts',
@@ -186,8 +186,8 @@ public function testMaximumLineLengthIs76Characters()
public function testMaximumLineLengthCanBeDifferent()
{
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -218,7 +218,7 @@ public function testMaximumLineLengthCanBeDifferent()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is, 0, 50);
+ $this->encoder->encodeByteStream($os, $is, 0, 50);
$this->assertEquals(
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmMxMjM0NTY3OD\r\n".
"kwQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoxMjM0NTY3YWJj\r\n".
@@ -229,8 +229,8 @@ public function testMaximumLineLengthCanBeDifferent()
public function testMaximumLineLengthIsNeverMoreThan76Chars()
{
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -261,7 +261,7 @@ public function testMaximumLineLengthIsNeverMoreThan76Chars()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is, 0, 100);
+ $this->encoder->encodeByteStream($os, $is, 0, 100);
$this->assertEquals(
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmMxMjM0NTY3ODkwQUJDREVGR0hJSktMTU5PUFFS\r\n".
'U1RVVldYWVoxMjM0NTY3YWJjZGVmZ2hpamts',
@@ -271,8 +271,8 @@ public function testMaximumLineLengthIsNeverMoreThan76Chars()
public function testFirstLineLengthCanBeDifferent()
{
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -303,7 +303,7 @@ public function testFirstLineLengthCanBeDifferent()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_encoder->encodeByteStream($os, $is, 19);
+ $this->encoder->encodeByteStream($os, $is, 19);
$this->assertEquals(
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmMxMjM0NTY3ODkwQUJDR\r\n".
'EVGR0hJSktMTU5PUFFSU1RVVldYWVoxMjM0NTY3YWJjZGVmZ2hpamts',
@@ -311,12 +311,12 @@ public function testFirstLineLengthCanBeDifferent()
);
}
- private function _createOutputByteStream($stub = false)
+ private function createOutputByteStream($stub = false)
{
return $this->getMockery('Swift_OutputByteStream')->shouldIgnoreMissing();
}
- private function _createInputByteStream($stub = false)
+ private function createInputByteStream($stub = false)
{
return $this->getMockery('Swift_InputByteStream')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/PlainContentEncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/PlainContentEncoderTest.php
index ca44e11..270d02c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/PlainContentEncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/PlainContentEncoderTest.php
@@ -4,16 +4,16 @@ class Swift_Mime_ContentEncoder_PlainContentEncoderTest extends \SwiftMailerTest
{
public function testNameCanBeSpecifiedInConstructor()
{
- $encoder = $this->_getEncoder('7bit');
+ $encoder = $this->getEncoder('7bit');
$this->assertEquals('7bit', $encoder->getName());
- $encoder = $this->_getEncoder('8bit');
+ $encoder = $this->getEncoder('8bit');
$this->assertEquals('8bit', $encoder->getName());
}
public function testNoOctetsAreModifiedInString()
{
- $encoder = $this->_getEncoder('7bit');
+ $encoder = $this->getEncoder('7bit');
foreach (range(0x00, 0xFF) as $octet) {
$byte = pack('C', $octet);
$this->assertIdenticalBinary($byte, $encoder->encodeString($byte));
@@ -22,12 +22,12 @@ public function testNoOctetsAreModifiedInString()
public function testNoOctetsAreModifiedInByteStream()
{
- $encoder = $this->_getEncoder('7bit');
+ $encoder = $this->getEncoder('7bit');
foreach (range(0x00, 0xFF) as $octet) {
$byte = pack('C', $octet);
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -47,9 +47,9 @@ public function testNoOctetsAreModifiedInByteStream()
public function testLineLengthCanBeSpecified()
{
- $encoder = $this->_getEncoder('7bit');
+ $encoder = $this->getEncoder('7bit');
- $chars = array();
+ $chars = [];
for ($i = 0; $i < 50; ++$i) {
$chars[] = 'a';
}
@@ -65,10 +65,10 @@ public function testLineLengthCanBeSpecified()
public function testLineLengthCanBeSpecifiedInByteStream()
{
- $encoder = $this->_getEncoder('7bit');
+ $encoder = $this->getEncoder('7bit');
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -94,7 +94,7 @@ public function testLineLengthCanBeSpecifiedInByteStream()
public function testencodeStringGeneratesCorrectCrlf()
{
- $encoder = $this->_getEncoder('7bit', true);
+ $encoder = $this->getEncoder('7bit', true);
$this->assertEquals("a\r\nb", $encoder->encodeString("a\rb"),
'%s: Line endings should be standardized'
);
@@ -114,13 +114,13 @@ public function testencodeStringGeneratesCorrectCrlf()
public function crlfProvider()
{
- return array(
- array("\r", "a\r\nb"),
- array("\n", "a\r\nb"),
- array("\n\r", "a\r\n\r\nb"),
- array("\n\n", "a\r\n\r\nb"),
- array("\r\r", "a\r\n\r\nb"),
- );
+ return [
+ ["\r", "a\r\nb"],
+ ["\n", "a\r\nb"],
+ ["\n\r", "a\r\n\r\nb"],
+ ["\n\n", "a\r\n\r\nb"],
+ ["\r\r", "a\r\n\r\nb"],
+ ];
}
/**
@@ -128,10 +128,10 @@ public function crlfProvider()
*/
public function testCanonicEncodeByteStreamGeneratesCorrectCrlf($test, $expected)
{
- $encoder = $this->_getEncoder('7bit', true);
+ $encoder = $this->getEncoder('7bit', true);
- $os = $this->_createOutputByteStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -154,17 +154,17 @@ public function testCanonicEncodeByteStreamGeneratesCorrectCrlf($test, $expected
$this->assertEquals($expected, $collection->content);
}
- private function _getEncoder($name, $canonical = false)
+ private function getEncoder($name, $canonical = false)
{
return new Swift_Mime_ContentEncoder_PlainContentEncoder($name, $canonical);
}
- private function _createOutputByteStream($stub = false)
+ private function createOutputByteStream($stub = false)
{
return $this->getMockery('Swift_OutputByteStream')->shouldIgnoreMissing();
}
- private function _createInputByteStream($stub = false)
+ private function createInputByteStream($stub = false)
{
return $this->getMockery('Swift_InputByteStream')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/QpContentEncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/QpContentEncoderTest.php
index 7762bbe..fd2ee44 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/QpContentEncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/QpContentEncoderTest.php
@@ -5,7 +5,7 @@ class Swift_Mime_ContentEncoder_QpContentEncoderTest extends \SwiftMailerTestCas
public function testNameIsQuotedPrintable()
{
$encoder = new Swift_Mime_ContentEncoder_QpContentEncoder(
- $this->_createCharacterStream(true)
+ $this->createCharacterStream(true)
);
$this->assertEquals('quoted-printable', $encoder->getName());
}
@@ -40,9 +40,9 @@ public function testPermittedCharactersAreNotEncoded()
foreach (array_merge(range(33, 60), range(62, 126)) as $ordinal) {
$char = chr($ordinal);
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -55,7 +55,7 @@ public function testPermittedCharactersAreNotEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -95,9 +95,9 @@ public function testLinearWhiteSpaceAtLineEndingIsEncoded()
$SPACE = chr(0x20); //32
//HT
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -110,22 +110,22 @@ public function testLinearWhiteSpaceAtLineEndingIsEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x09));
+ ->andReturn([0x09]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x09));
+ ->andReturn([0x09]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0D));
+ ->andReturn([0x0D]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0A));
+ ->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('b')));
+ ->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -136,9 +136,9 @@ public function testLinearWhiteSpaceAtLineEndingIsEncoded()
$this->assertEquals("a\t=09\r\nb", $collection->content);
//SPACE
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -151,22 +151,22 @@ public function testLinearWhiteSpaceAtLineEndingIsEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x20));
+ ->andReturn([0x20]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x20));
+ ->andReturn([0x20]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0D));
+ ->andReturn([0x0D]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0A));
+ ->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('b')));
+ ->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -206,9 +206,9 @@ public function testCRLFIsLeftAlone()
equivalent to performing the three steps separately.
*/
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -221,31 +221,31 @@ public function testCRLFIsLeftAlone()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0D));
+ ->andReturn([0x0D]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0A));
+ ->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('b')));
+ ->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0D));
+ ->andReturn([0x0D]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0A));
+ ->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('c')));
+ ->andReturn([ord('c')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0D));
+ ->andReturn([0x0D]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x0A));
+ ->andReturn([0x0A]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -267,9 +267,9 @@ public function testLinesLongerThan76CharactersAreSoftBroken()
line break in the encoded text.
*/
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -284,7 +284,7 @@ public function testLinesLongerThan76CharactersAreSoftBroken()
for ($seq = 0; $seq <= 140; ++$seq) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
}
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
@@ -297,9 +297,9 @@ public function testLinesLongerThan76CharactersAreSoftBroken()
public function testMaxLineLengthCanBeSpecified()
{
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -314,7 +314,7 @@ public function testMaxLineLengthCanBeSpecified()
for ($seq = 0; $seq <= 100; ++$seq) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
}
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
@@ -334,9 +334,9 @@ public function testBytesBelowPermittedRangeAreEncoded()
foreach (range(0, 32) as $ordinal) {
$char = chr($ordinal);
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -349,7 +349,7 @@ public function testBytesBelowPermittedRangeAreEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -368,9 +368,9 @@ public function testDecimalByte61IsEncoded()
$char = chr(61);
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -383,7 +383,7 @@ public function testDecimalByte61IsEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(61));
+ ->andReturn([61]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -402,9 +402,9 @@ public function testBytesAbovePermittedRangeAreEncoded()
foreach (range(127, 255) as $ordinal) {
$char = chr($ordinal);
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -417,7 +417,7 @@ public function testBytesAbovePermittedRangeAreEncoded()
->with($os);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($ordinal));
+ ->andReturn([$ordinal]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
@@ -430,9 +430,9 @@ public function testBytesAbovePermittedRangeAreEncoded()
public function testFirstLineLengthCanBeDifferent()
{
- $os = $this->_createOutputByteStream(true);
- $charStream = $this->_createCharacterStream();
- $is = $this->_createInputByteStream();
+ $os = $this->createOutputByteStream(true);
+ $charStream = $this->createCharacterStream();
+ $is = $this->createInputByteStream();
$collection = new Swift_StreamCollector();
$is->shouldReceive('write')
@@ -447,7 +447,7 @@ public function testFirstLineLengthCanBeDifferent()
for ($seq = 0; $seq <= 140; ++$seq) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
}
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
@@ -463,7 +463,7 @@ public function testFirstLineLengthCanBeDifferent()
public function testObserverInterfaceCanChangeCharset()
{
- $stream = $this->_createCharacterStream();
+ $stream = $this->createCharacterStream();
$stream->shouldReceive('setCharacterSet')
->once()
->with('windows-1252');
@@ -491,7 +491,7 @@ public function testTextIsPreWrapped()
);
}
- private function _createCharacterStream($stub = false)
+ private function createCharacterStream($stub = false)
{
return $this->getMockery('Swift_CharacterStream')->shouldIgnoreMissing();
}
@@ -499,17 +499,17 @@ private function _createCharacterStream($stub = false)
private function createEncoder()
{
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
- $charStream = new Swift_CharacterStream_NgCharacterStream($factory, 'utf-8');
+ $charStream = new Swift_CharacterStream_CharacterStream($factory, 'utf-8');
return new Swift_Mime_ContentEncoder_QpContentEncoder($charStream);
}
- private function _createOutputByteStream($stub = false)
+ private function createOutputByteStream($stub = false)
{
return $this->getMockery('Swift_OutputByteStream')->shouldIgnoreMissing();
}
- private function _createInputByteStream($stub = false)
+ private function createInputByteStream($stub = false)
{
return $this->getMockery('Swift_InputByteStream')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/EmbeddedFileTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/EmbeddedFileTest.php
index 3a1fc51..74f2acc 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/EmbeddedFileTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/EmbeddedFileTest.php
@@ -1,55 +1,59 @@
addToAssertionCount(1);
}
public function testNestingLevelIsEmbedded()
{
- $file = $this->_createEmbeddedFile($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $file = $this->createEmbeddedFile($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(
- Swift_Mime_MimeEntity::LEVEL_RELATED, $file->getNestingLevel()
+ Swift_Mime_SimpleMimeEntity::LEVEL_RELATED, $file->getNestingLevel()
);
}
public function testIdIsAutoGenerated()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addIdHeader')
->once()
->with('Content-ID', '/^.*?@.*?$/D');
- $file = $this->_createEmbeddedFile($headers, $this->_createEncoder(),
- $this->_createCache()
+ $file = $this->createEmbeddedFile($headers, $this->createEncoder(),
+ $this->createCache()
);
}
public function testDefaultDispositionIsInline()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addParameterizedHeader')
->once()
->with('Content-Disposition', 'inline');
$headers->shouldReceive('addParameterizedHeader')
->zeroOrMoreTimes();
- $file = $this->_createEmbeddedFile($headers, $this->_createEncoder(),
- $this->_createCache()
+ $file = $this->createEmbeddedFile($headers, $this->createEncoder(),
+ $this->createCache()
);
}
- protected function _createAttachment($headers, $encoder, $cache, $mimeTypes = array())
+ protected function createAttachment($headers, $encoder, $cache, $mimeTypes = [])
{
- return $this->_createEmbeddedFile($headers, $encoder, $cache, $mimeTypes);
+ return $this->createEmbeddedFile($headers, $encoder, $cache, $mimeTypes);
}
- private function _createEmbeddedFile($headers, $encoder, $cache)
+ private function createEmbeddedFile($headers, $encoder, $cache)
{
- return new Swift_Mime_EmbeddedFile($headers, $encoder, $cache, new Swift_Mime_Grammar());
+ $idGenerator = new Swift_Mime_IdGenerator('example.com');
+
+ return new Swift_Mime_EmbeddedFile($headers, $encoder, $cache, $idGenerator);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/HeaderEncoder/Base64HeaderEncoderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/HeaderEncoder/Base64HeaderEncoderTest.php
index 3580155..0db5407 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/HeaderEncoder/Base64HeaderEncoderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/HeaderEncoder/Base64HeaderEncoderTest.php
@@ -1,6 +1,6 @@
_createEncoder(
- $this->_createCharacterStream(true)
+ $encoder = $this->createEncoder(
+ $this->createCharacterStream(true)
);
$this->assertEquals('Q', $encoder->getName());
}
@@ -21,12 +21,12 @@ public function testSpaceAndTabNeverAppear()
the beginning and end of an 'encoded-word' are obvious.
*/
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$charStream->shouldReceive('readBytes')
->atLeast()->times(6)
- ->andReturn(array(ord('a')), array(0x20), array(0x09), array(0x20), array(ord('b')), false);
+ ->andReturn([ord('a')], [0x20], [0x09], [0x20], [ord('b')], false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$this->assertNotRegExp('~[ \t]~', $encoder->encodeString("a \t b"),
'%s: encoded-words in headers cannot contain LWSP as per RFC 2047.'
);
@@ -43,21 +43,21 @@ public function testSpaceIsRepresentedByUnderscore()
always represents hexadecimal 20, even if the SPACE character
occupies a different code position in the character set in use.
*/
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(0x20));
+ ->andReturn([0x20]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('b')));
+ ->andReturn([ord('b')]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$this->assertEquals('a_b', $encoder->encodeString('a b'),
'%s: Spaces can be represented by more readable underscores as per RFC 2047.'
);
@@ -72,21 +72,21 @@ public function testEqualsAndQuestionAndUnderscoreAreEncoded()
particular, SPACE and TAB MUST NOT be represented as themselves
within encoded words.
*/
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('=')));
+ ->andReturn([ord('=')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('?')));
+ ->andReturn([ord('?')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('_')));
+ ->andReturn([ord('_')]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$this->assertEquals('=3D=3F=5F', $encoder->encodeString('=?_'),
'%s: Chars =, ? and _ (underscore) may not appear as per RFC 2047.'
);
@@ -99,21 +99,21 @@ public function testParensAndQuotesAreEncoded()
contain the characters "(", ")" or "
*/
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('(')));
+ ->andReturn([ord('(')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('"')));
+ ->andReturn([ord('"')]);
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord(')')));
+ ->andReturn([ord(')')]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$this->assertEquals('=28=22=29', $encoder->encodeString('(")'),
'%s: Chars (, " (DQUOTE) and ) may not appear as per RFC 2047.'
);
@@ -139,21 +139,21 @@ public function testOnlyCharactersAllowedInPhrasesAreUsed()
$allowedBytes = array_merge(
range(ord('a'), ord('z')), range(ord('A'), ord('Z')),
range(ord('0'), ord('9')),
- array(ord('!'), ord('*'), ord('+'), ord('-'), ord('/'))
+ [ord('!'), ord('*'), ord('+'), ord('-'), ord('/')]
);
foreach (range(0x00, 0xFF) as $byte) {
$char = pack('C', $byte);
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array($byte));
+ ->andReturn([$byte]);
$charStream->shouldReceive('readBytes')
->zeroOrMoreTimes()
->andReturn(false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$encodedChar = $encoder->encodeString($char);
if (in_array($byte, $allowedBytes)) {
@@ -186,14 +186,14 @@ public function testEqualsNeverAppearsAtEndOfLine()
$input = str_repeat('a', 140);
- $charStream = $this->_createCharacterStream();
+ $charStream = $this->createCharacterStream();
$output = '';
$seq = 0;
for (; $seq < 140; ++$seq) {
$charStream->shouldReceive('readBytes')
->once()
- ->andReturn(array(ord('a')));
+ ->andReturn([ord('a')]);
if (75 == $seq) {
$output .= "\r\n"; // =\r\n
@@ -205,16 +205,16 @@ public function testEqualsNeverAppearsAtEndOfLine()
->zeroOrMoreTimes()
->andReturn(false);
- $encoder = $this->_createEncoder($charStream);
+ $encoder = $this->createEncoder($charStream);
$this->assertEquals($output, $encoder->encodeString($input));
}
- private function _createEncoder($charStream)
+ private function createEncoder($charStream)
{
return new Swift_Mime_HeaderEncoder_QpHeaderEncoder($charStream);
}
- private function _createCharacterStream($stub = false)
+ private function createCharacterStream($stub = false)
{
return $this->getMockery('Swift_CharacterStream')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/DateHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/DateHeaderTest.php
index 1822ea6..e419306 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/DateHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/DateHeaderTest.php
@@ -1,6 +1,6 @@
_getHeader('Date');
+ $header = $this->getHeader('Date');
$this->assertEquals(Swift_Mime_Header::TYPE_DATE, $header->getFieldType());
}
- public function testGetTimestamp()
+ public function testGetDateTime()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setTimestamp($timestamp);
- $this->assertSame($timestamp, $header->getTimestamp());
+ $dateTime = new DateTimeImmutable();
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertSame($dateTime, $header->getDateTime());
}
- public function testTimestampCanBeSetBySetter()
+ public function testDateTimeCanBeSetBySetter()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setTimestamp($timestamp);
- $this->assertSame($timestamp, $header->getTimestamp());
+ $dateTime = new DateTimeImmutable();
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertSame($dateTime, $header->getDateTime());
}
- public function testIntegerTimestampIsConvertedToRfc2822Date()
+ public function testDateTimeIsConvertedToImmutable()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setTimestamp($timestamp);
- $this->assertEquals(date('r', $timestamp), $header->getFieldBody());
+ $dateTime = new DateTime();
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertInstanceOf('DateTimeImmutable', $header->getDateTime());
+ $this->assertEquals($dateTime->getTimestamp(), $header->getDateTime()->getTimestamp());
+ $this->assertEquals($dateTime->getTimezone(), $header->getDateTime()->getTimezone());
+ }
+
+ public function testDateTimeIsImmutable()
+ {
+ $dateTime = new DateTime('2000-01-01 12:00:00 Europe/Berlin');
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+
+ $dateTime->setDate(2002, 2, 2);
+ $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getDateTime()->format('r'));
+ $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getFieldBody());
+ }
+
+ public function testDateTimeIsConvertedToRfc2822Date()
+ {
+ $dateTime = new DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin');
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getFieldBody());
}
public function testSetBodyModel()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setFieldBodyModel($timestamp);
- $this->assertEquals(date('r', $timestamp), $header->getFieldBody());
+ $dateTime = new DateTimeImmutable();
+ $header = $this->getHeader('Date');
+ $header->setFieldBodyModel($dateTime);
+ $this->assertEquals($dateTime->format('r'), $header->getFieldBody());
}
public function testGetBodyModel()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setTimestamp($timestamp);
- $this->assertEquals($timestamp, $header->getFieldBodyModel());
+ $dateTime = new DateTimeImmutable();
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertEquals($dateTime, $header->getFieldBodyModel());
}
public function testToString()
{
- $timestamp = time();
- $header = $this->_getHeader('Date');
- $header->setTimestamp($timestamp);
- $this->assertEquals('Date: '.date('r', $timestamp)."\r\n",
+ $dateTime = new DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin');
+ $header = $this->getHeader('Date');
+ $header->setDateTime($dateTime);
+ $this->assertEquals("Date: Sat, 01 Jan 2000 12:00:00 +0100\r\n",
$header->toString()
);
}
- private function _getHeader($name)
+ private function getHeader($name)
{
- return new Swift_Mime_Headers_DateHeader($name, new Swift_Mime_Grammar());
+ return new Swift_Mime_Headers_DateHeader($name);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/IdentificationHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/IdentificationHeaderTest.php
index 93b3f60..0d2edb7 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/IdentificationHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/IdentificationHeaderTest.php
@@ -1,10 +1,12 @@
_getHeader('Message-ID');
+ $header = $this->getHeader('Message-ID');
$this->assertEquals(Swift_Mime_Header::TYPE_ID, $header->getFieldType());
}
@@ -28,23 +30,23 @@ public function testValueMatchesMsgIdSpec()
no-fold-literal = "[" *(dtext / quoted-pair) "]"
*/
- $header = $this->_getHeader('Message-ID');
+ $header = $this->getHeader('Message-ID');
$header->setId('id-left@id-right');
$this->assertEquals('', $header->getFieldBody());
}
public function testIdCanBeRetrievedVerbatim()
{
- $header = $this->_getHeader('Message-ID');
+ $header = $this->getHeader('Message-ID');
$header->setId('id-left@id-right');
$this->assertEquals('id-left@id-right', $header->getId());
}
public function testMultipleIdsCanBeSet()
{
- $header = $this->_getHeader('References');
- $header->setIds(array('a@b', 'x@y'));
- $this->assertEquals(array('a@b', 'x@y'), $header->getIds());
+ $header = $this->getHeader('References');
+ $header->setIds(['a@b', 'x@y']);
+ $this->assertEquals(['a@b', 'x@y'], $header->getIds());
}
public function testSettingMultipleIdsProducesAListValue()
@@ -60,8 +62,8 @@ public function testSettingMultipleIdsProducesAListValue()
references = "References:" 1*msg-id CRLF
*/
- $header = $this->_getHeader('References');
- $header->setIds(array('a@b', 'x@y'));
+ $header = $this->getHeader('References');
+ $header->setIds(['a@b', 'x@y']);
$this->assertEquals(' ', $header->getFieldBody());
}
@@ -71,7 +73,7 @@ public function testIdLeftCanBeQuoted()
id-left = dot-atom-text / no-fold-quote / obs-id-left
*/
- $header = $this->_getHeader('References');
+ $header = $this->getHeader('References');
$header->setId('"ab"@c');
$this->assertEquals('"ab"@c', $header->getId());
$this->assertEquals('<"ab"@c>', $header->getFieldBody());
@@ -83,7 +85,7 @@ public function testIdLeftCanContainAnglesAsQuotedPairs()
no-fold-quote = DQUOTE *(qtext / quoted-pair) DQUOTE
*/
- $header = $this->_getHeader('References');
+ $header = $this->getHeader('References');
$header->setId('"a\\<\\>b"@c');
$this->assertEquals('"a\\<\\>b"@c', $header->getId());
$this->assertEquals('<"a\\<\\>b"@c>', $header->getFieldBody());
@@ -91,22 +93,20 @@ public function testIdLeftCanContainAnglesAsQuotedPairs()
public function testIdLeftCanBeDotAtom()
{
- $header = $this->_getHeader('References');
+ $header = $this->getHeader('References');
$header->setId('a.b+&%$.c@d');
$this->assertEquals('a.b+&%$.c@d', $header->getId());
$this->assertEquals('', $header->getFieldBody());
}
+ /**
+ * @expectedException \Exception
+ * @expectedMessageException "a b c" is not valid id-left
+ */
public function testInvalidIdLeftThrowsException()
{
- try {
- $header = $this->_getHeader('References');
- $header->setId('a b c@d');
- $this->fail(
- 'Exception should be thrown since "a b c" is not valid id-left.'
- );
- } catch (Exception $e) {
- }
+ $header = $this->getHeader('References');
+ $header->setId('a b c@d');
}
public function testIdRightCanBeDotAtom()
@@ -115,7 +115,7 @@ public function testIdRightCanBeDotAtom()
id-right = dot-atom-text / no-fold-literal / obs-id-right
*/
- $header = $this->_getHeader('References');
+ $header = $this->getHeader('References');
$header->setId('a@b.c+&%$.d');
$this->assertEquals('a@b.c+&%$.d', $header->getId());
$this->assertEquals('', $header->getFieldBody());
@@ -127,63 +127,66 @@ public function testIdRightCanBeLiteral()
no-fold-literal = "[" *(dtext / quoted-pair) "]"
*/
- $header = $this->_getHeader('References');
+ $header = $this->getHeader('References');
$header->setId('a@[1.2.3.4]');
$this->assertEquals('a@[1.2.3.4]', $header->getId());
$this->assertEquals('', $header->getFieldBody());
}
+ public function testIdRigthIsIdnEncoded()
+ {
+ $header = $this->getHeader('References');
+ $header->setId('a@ä');
+ $this->assertEquals('a@ä', $header->getId());
+ $this->assertEquals('', $header->getFieldBody());
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedMessageException "b c d" is not valid id-right
+ */
public function testInvalidIdRightThrowsException()
{
- try {
- $header = $this->_getHeader('References');
- $header->setId('a@b c d');
- $this->fail(
- 'Exception should be thrown since "b c d" is not valid id-right.'
- );
- } catch (Exception $e) {
- }
+ $header = $this->getHeader('References');
+ $header->setId('a@b c d');
}
+ /**
+ * @expectedException \Exception
+ * @expectedMessageException "abc" is does not contain @
+ */
public function testMissingAtSignThrowsException()
{
/* -- RFC 2822, 3.6.4.
msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS]
*/
-
- try {
- $header = $this->_getHeader('References');
- $header->setId('abc');
- $this->fail(
- 'Exception should be thrown since "abc" is does not contain @.'
- );
- } catch (Exception $e) {
- }
+ $header = $this->getHeader('References');
+ $header->setId('abc');
}
public function testSetBodyModel()
{
- $header = $this->_getHeader('Message-ID');
+ $header = $this->getHeader('Message-ID');
$header->setFieldBodyModel('a@b');
- $this->assertEquals(array('a@b'), $header->getIds());
+ $this->assertEquals(['a@b'], $header->getIds());
}
public function testGetBodyModel()
{
- $header = $this->_getHeader('Message-ID');
+ $header = $this->getHeader('Message-ID');
$header->setId('a@b');
- $this->assertEquals(array('a@b'), $header->getFieldBodyModel());
+ $this->assertEquals(['a@b'], $header->getFieldBodyModel());
}
public function testStringValue()
{
- $header = $this->_getHeader('References');
- $header->setIds(array('a@b', 'x@y'));
+ $header = $this->getHeader('References');
+ $header->setIds(['a@b', 'x@y']);
$this->assertEquals('References: '."\r\n", $header->toString());
}
- private function _getHeader($name)
+ private function getHeader($name)
{
- return new Swift_Mime_Headers_IdentificationHeader($name, new Swift_Mime_Grammar());
+ return new Swift_Mime_Headers_IdentificationHeader($name, new EmailValidator(), new Swift_AddressEncoder_IdnAddressEncoder());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/MailboxHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/MailboxHeaderTest.php
index 0713ff4..f64f5db 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/MailboxHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/MailboxHeaderTest.php
@@ -1,189 +1,227 @@
_getHeader('To', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('To');
$this->assertEquals(Swift_Mime_Header::TYPE_MAILBOX, $header->getFieldType());
}
public function testMailboxIsSetForAddress()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('From');
$header->setAddresses('chris@swiftmailer.org');
- $this->assertEquals(array('chris@swiftmailer.org'),
+ $this->assertEquals(['chris@swiftmailer.org'],
$header->getNameAddressStrings()
);
}
public function testMailboxIsRenderedForNameAddress()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array('chris@swiftmailer.org' => 'Chris Corbyn'));
+ $header = $this->getHeader('From');
+ $header->setNameAddresses(['chris@swiftmailer.org' => 'Chris Corbyn']);
$this->assertEquals(
- array('Chris Corbyn '), $header->getNameAddressStrings()
+ ['Chris Corbyn '], $header->getNameAddressStrings()
);
}
public function testAddressCanBeReturnedForAddress()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('From');
$header->setAddresses('chris@swiftmailer.org');
- $this->assertEquals(array('chris@swiftmailer.org'), $header->getAddresses());
+ $this->assertEquals(['chris@swiftmailer.org'], $header->getAddresses());
}
public function testAddressCanBeReturnedForNameAddress()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array('chris@swiftmailer.org' => 'Chris Corbyn'));
- $this->assertEquals(array('chris@swiftmailer.org'), $header->getAddresses());
+ $header = $this->getHeader('From');
+ $header->setNameAddresses(['chris@swiftmailer.org' => 'Chris Corbyn']);
+ $this->assertEquals(['chris@swiftmailer.org'], $header->getAddresses());
}
public function testQuotesInNameAreQuoted()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn, "DHE"',
- ));
+ ]);
$this->assertEquals(
- array('"Chris Corbyn, \"DHE\"" '),
+ ['"Chris Corbyn, \"DHE\"" '],
$header->getNameAddressStrings()
);
}
public function testEscapeCharsInNameAreQuoted()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn, \\escaped\\',
- ));
+ ]);
+ $this->assertEquals(
+ ['"Chris Corbyn, \\\\escaped\\\\" '],
+ $header->getNameAddressStrings()
+ );
+ }
+
+ public function testUtf8CharsInDomainAreIdnEncoded()
+ {
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
+ 'chris@swïftmailer.org' => 'Chris Corbyn',
+ ]);
+ $this->assertEquals(
+ ['Chris Corbyn '],
+ $header->getNameAddressStrings()
+ );
+ }
+
+ /**
+ * @expectedException \Swift_AddressEncoderException
+ */
+ public function testUtf8CharsInLocalPartThrows()
+ {
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
+ 'chrïs@swiftmailer.org' => 'Chris Corbyn',
+ ]);
+ $header->getNameAddressStrings();
+ }
+
+ public function testUtf8CharsInEmail()
+ {
+ $header = $this->getHeader('From', null, new Swift_AddressEncoder_Utf8AddressEncoder());
+ $header->setNameAddresses([
+ 'chrïs@swïftmailer.org' => 'Chris Corbyn',
+ ]);
$this->assertEquals(
- array('"Chris Corbyn, \\\\escaped\\\\" '),
+ ['Chris Corbyn '],
$header->getNameAddressStrings()
);
}
public function testGetMailboxesReturnsNameValuePairs()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn, DHE',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org' => 'Chris Corbyn, DHE'), $header->getNameAddresses()
+ ['chris@swiftmailer.org' => 'Chris Corbyn, DHE'], $header->getNameAddresses()
);
}
public function testMultipleAddressesCanBeSetAndFetched()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setAddresses([
'chris@swiftmailer.org', 'mark@swiftmailer.org',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org'),
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org'],
$header->getAddresses()
);
}
public function testMultipleAddressesAsMailboxes()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setAddresses([
'chris@swiftmailer.org', 'mark@swiftmailer.org',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org' => null, 'mark@swiftmailer.org' => null),
+ ['chris@swiftmailer.org' => null, 'mark@swiftmailer.org' => null],
$header->getNameAddresses()
);
}
public function testMultipleAddressesAsMailboxStrings()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setAddresses([
'chris@swiftmailer.org', 'mark@swiftmailer.org',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org'),
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org'],
$header->getNameAddressStrings()
);
}
public function testMultipleNamedMailboxesReturnsMultipleAddresses()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org'),
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org'],
$header->getAddresses()
);
}
public function testMultipleNamedMailboxesReturnsMultipleMailboxes()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
- $this->assertEquals(array(
+ ]);
+ $this->assertEquals([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ),
+ ],
$header->getNameAddresses()
);
}
public function testMultipleMailboxesProducesMultipleMailboxStrings()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
- $this->assertEquals(array(
+ ]);
+ $this->assertEquals([
'Chris Corbyn ',
'Mark Corbyn ',
- ),
+ ],
$header->getNameAddressStrings()
);
}
public function testSetAddressesOverwritesAnyMailboxes()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$this->assertEquals(
- array('chris@swiftmailer.org' => 'Chris Corbyn',
- 'mark@swiftmailer.org' => 'Mark Corbyn', ),
+ ['chris@swiftmailer.org' => 'Chris Corbyn',
+ 'mark@swiftmailer.org' => 'Mark Corbyn', ],
$header->getNameAddresses()
);
$this->assertEquals(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org'),
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org'],
$header->getAddresses()
);
- $header->setAddresses(array('chris@swiftmailer.org', 'mark@swiftmailer.org'));
+ $header->setAddresses(['chris@swiftmailer.org', 'mark@swiftmailer.org']);
$this->assertEquals(
- array('chris@swiftmailer.org' => null, 'mark@swiftmailer.org' => null),
+ ['chris@swiftmailer.org' => null, 'mark@swiftmailer.org' => null],
$header->getNameAddresses()
);
$this->assertEquals(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org'),
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org'],
$header->getAddresses()
);
}
@@ -192,18 +230,18 @@ public function testNameIsEncodedIfNonAscii()
{
$name = 'C'.pack('C', 0x8F).'rbyn';
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($name, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('C=8Frbyn');
- $header = $this->_getHeader('From', $encoder);
- $header->setNameAddresses(array('chris@swiftmailer.org' => 'Chris '.$name));
+ $header = $this->getHeader('From', $encoder);
+ $header->setNameAddresses(['chris@swiftmailer.org' => 'Chris '.$name]);
$addresses = $header->getNameAddressStrings();
$this->assertEquals(
- 'Chris =?'.$this->_charset.'?Q?C=8Frbyn?= ',
+ 'Chris =?'.$this->charset.'?Q?C=8Frbyn?= ',
array_shift($addresses)
);
}
@@ -217,24 +255,24 @@ public function testEncodingLineLengthCalculations()
$name = 'C'.pack('C', 0x8F).'rbyn';
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($name, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('C=8Frbyn');
- $header = $this->_getHeader('From', $encoder);
- $header->setNameAddresses(array('chris@swiftmailer.org' => 'Chris '.$name));
+ $header = $this->getHeader('From', $encoder);
+ $header->setNameAddresses(['chris@swiftmailer.org' => 'Chris '.$name]);
$header->getNameAddressStrings();
}
public function testGetValueReturnsMailboxStringValue()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
- ));
+ ]);
$this->assertEquals(
'Chris Corbyn ', $header->getFieldBody()
);
@@ -242,11 +280,11 @@ public function testGetValueReturnsMailboxStringValue()
public function testGetValueReturnsMailboxStringValueForMultipleMailboxes()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$this->assertEquals(
'Chris Corbyn , Mark Corbyn ',
$header->getFieldBody()
@@ -255,51 +293,51 @@ public function testGetValueReturnsMailboxStringValueForMultipleMailboxes()
public function testRemoveAddressesWithSingleValue()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$header->removeAddresses('chris@swiftmailer.org');
- $this->assertEquals(array('mark@swiftmailer.org'),
+ $this->assertEquals(['mark@swiftmailer.org'],
$header->getAddresses()
);
}
public function testRemoveAddressesWithList()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$header->removeAddresses(
- array('chris@swiftmailer.org', 'mark@swiftmailer.org')
+ ['chris@swiftmailer.org', 'mark@swiftmailer.org']
);
- $this->assertEquals(array(), $header->getAddresses());
+ $this->assertEquals([], $header->getAddresses());
}
public function testSetBodyModel()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('From');
$header->setFieldBodyModel('chris@swiftmailer.org');
- $this->assertEquals(array('chris@swiftmailer.org' => null), $header->getNameAddresses());
+ $this->assertEquals(['chris@swiftmailer.org' => null], $header->getNameAddresses());
}
public function testGetBodyModel()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setAddresses(array('chris@swiftmailer.org'));
- $this->assertEquals(array('chris@swiftmailer.org' => null), $header->getFieldBodyModel());
+ $header = $this->getHeader('From');
+ $header->setAddresses(['chris@swiftmailer.org']);
+ $this->assertEquals(['chris@swiftmailer.org' => null], $header->getFieldBodyModel());
}
public function testToString()
{
- $header = $this->_getHeader('From', $this->_getEncoder('Q', true));
- $header->setNameAddresses(array(
+ $header = $this->getHeader('From');
+ $header->setNameAddresses([
'chris@swiftmailer.org' => 'Chris Corbyn',
'mark@swiftmailer.org' => 'Mark Corbyn',
- ));
+ ]);
$this->assertEquals(
'From: Chris Corbyn , '.
'Mark Corbyn '."\r\n",
@@ -307,15 +345,17 @@ public function testToString()
);
}
- private function _getHeader($name, $encoder)
+ private function getHeader($name, $encoder = null, $addressEncoder = null)
{
- $header = new Swift_Mime_Headers_MailboxHeader($name, $encoder, new Swift_Mime_Grammar());
- $header->setCharset($this->_charset);
+ $encoder = $encoder ?? $this->getEncoder('Q', true);
+ $addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
+ $header = new Swift_Mime_Headers_MailboxHeader($name, $encoder, new EmailValidator(), $addressEncoder);
+ $header->setCharset($this->charset);
return $header;
}
- private function _getEncoder($type, $stub = false)
+ private function getEncoder($type)
{
$encoder = $this->getMockery('Swift_Mime_HeaderEncoder')->shouldIgnoreMissing();
$encoder->shouldReceive('getName')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/ParameterizedHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/ParameterizedHeaderTest.php
index cd027cc..c90b05b 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/ParameterizedHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/ParameterizedHeaderTest.php
@@ -2,21 +2,21 @@
class Swift_Mime_Headers_ParameterizedHeaderTest extends \SwiftMailerTestCase
{
- private $_charset = 'utf-8';
- private $_lang = 'en-us';
+ private $charset = 'utf-8';
+ private $lang = 'en-us';
public function testTypeIsParameterizedHeader()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$this->assertEquals(Swift_Mime_Header::TYPE_PARAMETERIZED, $header->getFieldType());
}
public function testValueIsReturnedVerbatim()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setValue('text/plain');
$this->assertEquals('text/plain', $header->getValue());
@@ -43,21 +43,21 @@ public function testParametersAreAppended()
; to use within parameter values
*/
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setValue('text/plain');
- $header->setParameters(array('charset' => 'utf-8'));
+ $header->setParameters(['charset' => 'utf-8']);
$this->assertEquals('text/plain; charset=utf-8', $header->getFieldBody());
}
public function testSpaceInParamResultsInQuotedString()
{
- $header = $this->_getHeader('Content-Disposition',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Disposition',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setValue('attachment');
- $header->setParameters(array('filename' => 'my file.txt'));
+ $header->setParameters(['filename' => 'my file.txt']);
$this->assertEquals('attachment; filename="my file.txt"',
$header->getFieldBody()
);
@@ -94,18 +94,18 @@ public function testLongParamsAreBrokenIntoMultipleAttributeStrings()
$value = str_repeat('a', 180);
- $encoder = $this->_getParameterEncoder();
+ $encoder = $this->getParameterEncoder();
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), 63, \Mockery::any())
->andReturn(str_repeat('a', 63)."\r\n".
str_repeat('a', 63)."\r\n".str_repeat('a', 54));
- $header = $this->_getHeader('Content-Disposition',
- $this->_getHeaderEncoder('Q', true), $encoder
+ $header = $this->getHeader('Content-Disposition',
+ $this->getHeaderEncoder('Q', true), $encoder
);
$header->setValue('attachment');
- $header->setParameters(array('filename' => $value));
+ $header->setParameters(['filename' => $value]);
$header->setMaxLineLength(78);
$this->assertEquals(
'attachment; '.
@@ -143,21 +143,21 @@ public function testEncodedParamDataIncludesCharsetAndLanguage()
$value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 10);
- $encoder = $this->_getParameterEncoder();
+ $encoder = $this->getParameterEncoder();
$encoder->shouldReceive('encodeString')
->once()
->with($value, 12, 62, \Mockery::any())
->andReturn(str_repeat('a', 20).'%8F'.str_repeat('a', 10));
- $header = $this->_getHeader('Content-Disposition',
- $this->_getHeaderEncoder('Q', true), $encoder
+ $header = $this->getHeader('Content-Disposition',
+ $this->getHeaderEncoder('Q', true), $encoder
);
$header->setValue('attachment');
- $header->setParameters(array('filename' => $value));
+ $header->setParameters(['filename' => $value]);
$header->setMaxLineLength(78);
- $header->setLanguage($this->_lang);
+ $header->setLanguage($this->lang);
$this->assertEquals(
- 'attachment; filename*='.$this->_charset."'".$this->_lang."'".
+ 'attachment; filename*='.$this->charset."'".$this->lang."'".
str_repeat('a', 20).'%8F'.str_repeat('a', 10),
$header->getFieldBody()
);
@@ -196,22 +196,22 @@ public function testMultipleEncodedParamLinesAreFormattedCorrectly()
$value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 60);
- $encoder = $this->_getParameterEncoder();
+ $encoder = $this->getParameterEncoder();
$encoder->shouldReceive('encodeString')
->once()
->with($value, 12, 62, \Mockery::any())
->andReturn(str_repeat('a', 20).'%8F'.str_repeat('a', 28)."\r\n".
str_repeat('a', 32));
- $header = $this->_getHeader('Content-Disposition',
- $this->_getHeaderEncoder('Q', true), $encoder
+ $header = $this->getHeader('Content-Disposition',
+ $this->getHeaderEncoder('Q', true), $encoder
);
$header->setValue('attachment');
- $header->setParameters(array('filename' => $value));
+ $header->setParameters(['filename' => $value]);
$header->setMaxLineLength(78);
- $header->setLanguage($this->_lang);
+ $header->setLanguage($this->lang);
$this->assertEquals(
- 'attachment; filename*0*='.$this->_charset."'".$this->_lang."'".
+ 'attachment; filename*0*='.$this->charset."'".$this->lang."'".
str_repeat('a', 20).'%8F'.str_repeat('a', 28).";\r\n ".
'filename*1*='.str_repeat('a', 32),
$header->getFieldBody()
@@ -220,11 +220,11 @@ public function testMultipleEncodedParamLinesAreFormattedCorrectly()
public function testToString()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setValue('text/html');
- $header->setParameters(array('charset' => 'utf-8'));
+ $header->setParameters(['charset' => 'utf-8']);
$this->assertEquals('Content-Type: text/html; charset=utf-8'."\r\n",
$header->toString()
);
@@ -234,15 +234,15 @@ public function testValueCanBeEncodedIfNonAscii()
{
$value = 'fo'.pack('C', 0x8F).'bar';
- $encoder = $this->_getHeaderEncoder('Q');
+ $encoder = $this->getHeaderEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo=8Fbar');
- $header = $this->_getHeader('X-Foo', $encoder, $this->_getParameterEncoder(true));
+ $header = $this->getHeader('X-Foo', $encoder, $this->getParameterEncoder(true));
$header->setValue($value);
- $header->setParameters(array('lookslike' => 'foobar'));
+ $header->setParameters(['lookslike' => 'foobar']);
$this->assertEquals('X-Foo: =?utf-8?Q?fo=8Fbar?=; lookslike=foobar'."\r\n",
$header->toString()
);
@@ -252,21 +252,21 @@ public function testValueAndParamCanBeEncodedIfNonAscii()
{
$value = 'fo'.pack('C', 0x8F).'bar';
- $encoder = $this->_getHeaderEncoder('Q');
+ $encoder = $this->getHeaderEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo=8Fbar');
- $paramEncoder = $this->_getParameterEncoder();
+ $paramEncoder = $this->getParameterEncoder();
$paramEncoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo%8Fbar');
- $header = $this->_getHeader('X-Foo', $encoder, $paramEncoder);
+ $header = $this->getHeader('X-Foo', $encoder, $paramEncoder);
$header->setValue($value);
- $header->setParameters(array('says' => $value));
+ $header->setParameters(['says' => $value]);
$this->assertEquals("X-Foo: =?utf-8?Q?fo=8Fbar?=; says*=utf-8''fo%8Fbar\r\n",
$header->toString()
);
@@ -276,15 +276,15 @@ public function testParamsAreEncodedWithEncodedWordsIfNoParamEncoderSet()
{
$value = 'fo'.pack('C', 0x8F).'bar';
- $encoder = $this->_getHeaderEncoder('Q');
+ $encoder = $this->getHeaderEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo=8Fbar');
- $header = $this->_getHeader('X-Foo', $encoder, null);
+ $header = $this->getHeader('X-Foo', $encoder, null);
$header->setValue('bar');
- $header->setParameters(array('says' => $value));
+ $header->setParameters(['says' => $value]);
$this->assertEquals("X-Foo: bar; says=\"=?utf-8?Q?fo=8Fbar?=\"\r\n",
$header->toString()
);
@@ -311,22 +311,22 @@ public function testLanguageInformationAppearsInEncodedWords()
$value = 'fo'.pack('C', 0x8F).'bar';
- $encoder = $this->_getHeaderEncoder('Q');
+ $encoder = $this->getHeaderEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo=8Fbar');
- $paramEncoder = $this->_getParameterEncoder();
+ $paramEncoder = $this->getParameterEncoder();
$paramEncoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo%8Fbar');
- $header = $this->_getHeader('X-Foo', $encoder, $paramEncoder);
+ $header = $this->getHeader('X-Foo', $encoder, $paramEncoder);
$header->setLanguage('en');
$header->setValue($value);
- $header->setParameters(array('says' => $value));
+ $header->setParameters(['says' => $value]);
$this->assertEquals("X-Foo: =?utf-8*en?Q?fo=8Fbar?=; says*=utf-8'en'fo%8Fbar\r\n",
$header->toString()
);
@@ -334,8 +334,8 @@ public function testLanguageInformationAppearsInEncodedWords()
public function testSetBodyModel()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setFieldBodyModel('text/html');
$this->assertEquals('text/html', $header->getValue());
@@ -343,8 +343,8 @@ public function testSetBodyModel()
public function testGetBodyModel()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
$header->setValue('text/plain');
$this->assertEquals('text/plain', $header->getFieldBodyModel());
@@ -352,36 +352,34 @@ public function testGetBodyModel()
public function testSetParameter()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
- $header->setParameters(array('charset' => 'utf-8', 'delsp' => 'yes'));
+ $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
$header->setParameter('delsp', 'no');
- $this->assertEquals(array('charset' => 'utf-8', 'delsp' => 'no'),
+ $this->assertEquals(['charset' => 'utf-8', 'delsp' => 'no'],
$header->getParameters()
);
}
public function testGetParameter()
{
- $header = $this->_getHeader('Content-Type',
- $this->_getHeaderEncoder('Q', true), $this->_getParameterEncoder(true)
+ $header = $this->getHeader('Content-Type',
+ $this->getHeaderEncoder('Q', true), $this->getParameterEncoder(true)
);
- $header->setParameters(array('charset' => 'utf-8', 'delsp' => 'yes'));
+ $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
$this->assertEquals('utf-8', $header->getParameter('charset'));
}
- private function _getHeader($name, $encoder, $paramEncoder)
+ private function getHeader($name, $encoder, $paramEncoder)
{
- $header = new Swift_Mime_Headers_ParameterizedHeader($name, $encoder,
- $paramEncoder, new Swift_Mime_Grammar()
- );
- $header->setCharset($this->_charset);
+ $header = new Swift_Mime_Headers_ParameterizedHeader($name, $encoder, $paramEncoder);
+ $header->setCharset($this->charset);
return $header;
}
- private function _getHeaderEncoder($type, $stub = false)
+ private function getHeaderEncoder($type, $stub = false)
{
$encoder = $this->getMockery('Swift_Mime_HeaderEncoder')->shouldIgnoreMissing();
$encoder->shouldReceive('getName')
@@ -391,7 +389,7 @@ private function _getHeaderEncoder($type, $stub = false)
return $encoder;
}
- private function _getParameterEncoder($stub = false)
+ private function getParameterEncoder($stub = false)
{
return $this->getMockery('Swift_Encoder')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/PathHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/PathHeaderTest.php
index a9f35e9..045107e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/PathHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/PathHeaderTest.php
@@ -1,28 +1,29 @@
_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$this->assertEquals(Swift_Mime_Header::TYPE_PATH, $header->getFieldType());
}
public function testSingleAddressCanBeSetAndFetched()
{
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setAddress('chris@swiftmailer.org');
$this->assertEquals('chris@swiftmailer.org', $header->getAddress());
}
+ /**
+ * @expectedException \Exception
+ */
public function testAddressMustComplyWithRfc2822()
{
- try {
- $header = $this->_getHeader('Return-Path');
- $header->setAddress('chr is@swiftmailer.org');
- $this->fail('Addresses not valid according to RFC 2822 addr-spec grammar must be rejected.');
- } catch (Exception $e) {
- }
+ $header = $this->getHeader('Return-Path');
+ $header->setAddress('chr is@swiftmailer.org');
}
public function testValueIsAngleAddrWithValidAddress()
@@ -35,43 +36,60 @@ public function testValueIsAngleAddrWithValidAddress()
obs-path
*/
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setAddress('chris@swiftmailer.org');
$this->assertEquals('', $header->getFieldBody());
}
+ public function testAddressIsIdnEncoded()
+ {
+ $header = $this->getHeader('Return-Path');
+ $header->setAddress('chris@swïftmailer.org');
+ $this->assertEquals('', $header->getFieldBody());
+ }
+
+ /**
+ * @expectedException \Swift_AddressEncoderException
+ */
+ public function testAddressMustBeEncodable()
+ {
+ $header = $this->getHeader('Return-Path');
+ $header->setAddress('chrïs@swiftmailer.org');
+ $header->getFieldBody();
+ }
+
public function testValueIsEmptyAngleBracketsIfEmptyAddressSet()
{
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setAddress('');
$this->assertEquals('<>', $header->getFieldBody());
}
public function testSetBodyModel()
{
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setFieldBodyModel('foo@bar.tld');
$this->assertEquals('foo@bar.tld', $header->getAddress());
}
public function testGetBodyModel()
{
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setAddress('foo@bar.tld');
$this->assertEquals('foo@bar.tld', $header->getFieldBodyModel());
}
public function testToString()
{
- $header = $this->_getHeader('Return-Path');
+ $header = $this->getHeader('Return-Path');
$header->setAddress('chris@swiftmailer.org');
$this->assertEquals('Return-Path: '."\r\n",
$header->toString()
);
}
- private function _getHeader($name)
+ private function getHeader($name)
{
- return new Swift_Mime_Headers_PathHeader($name, new Swift_Mime_Grammar());
+ return new Swift_Mime_Headers_PathHeader($name, new EmailValidator(), new Swift_AddressEncoder_IdnAddressEncoder());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/UnstructuredHeaderTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/UnstructuredHeaderTest.php
index 2e1dc8c..30ccb00 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/UnstructuredHeaderTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/Headers/UnstructuredHeaderTest.php
@@ -2,23 +2,23 @@
class Swift_Mime_Headers_UnstructuredHeaderTest extends \SwiftMailerTestCase
{
- private $_charset = 'utf-8';
+ private $charset = 'utf-8';
public function testTypeIsTextHeader()
{
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$this->assertEquals(Swift_Mime_Header::TYPE_TEXT, $header->getFieldType());
}
public function testGetNameReturnsNameVerbatim()
{
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$this->assertEquals('Subject', $header->getFieldName());
}
public function testGetValueReturnsValueVerbatim()
{
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$header->setValue('Test');
$this->assertEquals('Test', $header->getValue());
}
@@ -29,7 +29,7 @@ public function testBasicStructureIsKeyValuePair()
Header fields are lines composed of a field name, followed by a colon
(":"), followed by a field body, and terminated by CRLF.
*/
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$header->setValue('Test');
$this->assertEquals('Subject: Test'."\r\n", $header->toString());
}
@@ -48,8 +48,8 @@ public function testLongHeadersAreFoldedAtWordBoundary()
$value = 'The quick brown fox jumped over the fence, he was a very very '.
'scary brown fox with a bushy tail';
- $header = $this->_getHeader('X-Custom-Header',
- $this->_getEncoder('Q', true)
+ $header = $this->getHeader('X-Custom-Header',
+ $this->getEncoder('Q', true)
);
$header->setValue($value);
$header->setMaxLineLength(78); //A safe [RFC 2822, 2.2.3] default
@@ -75,7 +75,7 @@ public function testPrintableAsciiOnlyAppearsInHeaders()
*/
$nonAsciiChar = pack('C', 0x8F);
- $header = $this->_getHeader('X-Test', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('X-Test', $this->getEncoder('Q', true));
$header->setValue($nonAsciiChar);
$this->assertRegExp(
'~^[^:\x00-\x20\x80-\xFF]+: [^\x80-\xFF\r\n]+\r\n$~s',
@@ -92,7 +92,7 @@ public function testEncodedWordsFollowGeneralStructure()
*/
$nonAsciiChar = pack('C', 0x8F);
- $header = $this->_getHeader('X-Test', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('X-Test', $this->getEncoder('Q', true));
$header->setValue($nonAsciiChar);
$this->assertRegExp(
'~^X-Test: \=?.*?\?.*?\?.*?\?=\r\n$~s',
@@ -112,16 +112,16 @@ public function testEncodedWordIncludesCharsetAndEncodingMethodAndText()
$nonAsciiChar = pack('C', 0x8F);
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($nonAsciiChar, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('=8F');
- $header = $this->_getHeader('X-Test', $encoder);
+ $header = $this->getHeader('X-Test', $encoder);
$header->setValue($nonAsciiChar);
$this->assertEquals(
- 'X-Test: =?'.$this->_charset.'?Q?=8F?='."\r\n",
+ 'X-Test: =?'.$this->charset.'?Q?=8F?='."\r\n",
$header->toString()
);
}
@@ -130,24 +130,24 @@ public function testEncodedWordsAreUsedToEncodedNonPrintableAscii()
{
//SPACE and TAB permitted
$nonPrintableBytes = array_merge(
- range(0x00, 0x08), range(0x10, 0x19), array(0x7F)
+ range(0x00, 0x08), range(0x10, 0x19), [0x7F]
);
foreach ($nonPrintableBytes as $byte) {
$char = pack('C', $byte);
$encodedChar = sprintf('=%02X', $byte);
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($char, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn($encodedChar);
- $header = $this->_getHeader('X-A', $encoder);
+ $header = $this->getHeader('X-A', $encoder);
$header->setValue($char);
$this->assertEquals(
- 'X-A: =?'.$this->_charset.'?Q?'.$encodedChar.'?='."\r\n",
+ 'X-A: =?'.$this->charset.'?Q?'.$encodedChar.'?='."\r\n",
$header->toString(), '%s: Non-printable ascii should be encoded'
);
}
@@ -155,23 +155,21 @@ public function testEncodedWordsAreUsedToEncodedNonPrintableAscii()
public function testEncodedWordsAreUsedToEncode8BitOctets()
{
- $_8BitBytes = range(0x80, 0xFF);
-
- foreach ($_8BitBytes as $byte) {
+ foreach (range(0x80, 0xFF) as $byte) {
$char = pack('C', $byte);
$encodedChar = sprintf('=%02X', $byte);
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($char, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn($encodedChar);
- $header = $this->_getHeader('X-A', $encoder);
+ $header = $this->getHeader('X-A', $encoder);
$header->setValue($char);
$this->assertEquals(
- 'X-A: =?'.$this->_charset.'?Q?'.$encodedChar.'?='."\r\n",
+ 'X-A: =?'.$this->charset.'?Q?'.$encodedChar.'?='."\r\n",
$header->toString(), '%s: 8-bit octets should be encoded'
);
}
@@ -192,7 +190,7 @@ public function testEncodedWordsAreNoMoreThan75CharsPerLine()
$nonAsciiChar = pack('C', 0x8F);
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($nonAsciiChar, \Mockery::any(), \Mockery::any(), \Mockery::any())
@@ -201,11 +199,11 @@ public function testEncodedWordsAreNoMoreThan75CharsPerLine()
//Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
//* X-Test: is 8 chars
- $header = $this->_getHeader('X-Test', $encoder);
+ $header = $this->getHeader('X-Test', $encoder);
$header->setValue($nonAsciiChar);
$this->assertEquals(
- 'X-Test: =?'.$this->_charset.'?Q?=8F?='."\r\n",
+ 'X-Test: =?'.$this->charset.'?Q?=8F?='."\r\n",
$header->toString()
);
}
@@ -222,7 +220,7 @@ public function testFWSPIsUsedWhenEncoderReturnsMultipleLines()
// encoding for the sake of testing
$nonAsciiChar = pack('C', 0x8F);
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($nonAsciiChar, 8, 63, \Mockery::any())
@@ -232,12 +230,12 @@ public function testFWSPIsUsedWhenEncoderReturnsMultipleLines()
//Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
//* X-Test: is 8 chars
- $header = $this->_getHeader('X-Test', $encoder);
+ $header = $this->getHeader('X-Test', $encoder);
$header->setValue($nonAsciiChar);
$this->assertEquals(
- 'X-Test: =?'.$this->_charset.'?Q?line_one_here?='."\r\n".
- ' =?'.$this->_charset.'?Q?line_two_here?='."\r\n",
+ 'X-Test: =?'.$this->charset.'?Q?line_one_here?='."\r\n".
+ ' =?'.$this->charset.'?Q?line_two_here?='."\r\n",
$header->toString()
);
}
@@ -264,7 +262,7 @@ public function testAdjacentWordsAreEncodedTogether()
$text = 'start '.$word.' '.$word.' then end '.$word;
// 'start', ' word word', ' and end', ' word'
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($word.' '.$word, \Mockery::any(), \Mockery::any(), \Mockery::any())
@@ -274,13 +272,13 @@ public function testAdjacentWordsAreEncodedTogether()
->with($word, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('w=8Frd');
- $header = $this->_getHeader('X-Test', $encoder);
+ $header = $this->getHeader('X-Test', $encoder);
$header->setValue($text);
$headerString = $header->toString();
- $this->assertEquals('X-Test: start =?'.$this->_charset.'?Q?'.
- 'w=8Frd_w=8Frd?= then end =?'.$this->_charset.'?Q?'.
+ $this->assertEquals('X-Test: start =?'.$this->charset.'?Q?'.
+ 'w=8Frd_w=8Frd?= then end =?'.$this->charset.'?Q?'.
'w=8Frd?='."\r\n", $headerString,
'%s: Adjacent encoded words should appear grouped with WSP encoded'
);
@@ -307,13 +305,13 @@ public function testLanguageInformationAppearsInEncodedWords()
$value = 'fo'.pack('C', 0x8F).'bar';
- $encoder = $this->_getEncoder('Q');
+ $encoder = $this->getEncoder('Q');
$encoder->shouldReceive('encodeString')
->once()
->with($value, \Mockery::any(), \Mockery::any(), \Mockery::any())
->andReturn('fo=8Fbar');
- $header = $this->_getHeader('Subject', $encoder);
+ $header = $this->getHeader('Subject', $encoder);
$header->setLanguage('en');
$header->setValue($value);
$this->assertEquals("Subject: =?utf-8*en?Q?fo=8Fbar?=\r\n",
@@ -323,27 +321,27 @@ public function testLanguageInformationAppearsInEncodedWords()
public function testSetBodyModel()
{
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$header->setFieldBodyModel('test');
$this->assertEquals('test', $header->getValue());
}
public function testGetBodyModel()
{
- $header = $this->_getHeader('Subject', $this->_getEncoder('Q', true));
+ $header = $this->getHeader('Subject', $this->getEncoder('Q', true));
$header->setValue('test');
$this->assertEquals('test', $header->getFieldBodyModel());
}
- private function _getHeader($name, $encoder)
+ private function getHeader($name, $encoder)
{
- $header = new Swift_Mime_Headers_UnstructuredHeader($name, $encoder, new Swift_Mime_Grammar());
- $header->setCharset($this->_charset);
+ $header = new Swift_Mime_Headers_UnstructuredHeader($name, $encoder);
+ $header->setCharset($this->charset);
return $header;
}
- private function _getEncoder($type, $stub = false)
+ private function getEncoder($type, $stub = false)
{
$encoder = $this->getMockery('Swift_Mime_HeaderEncoder')->shouldIgnoreMissing();
$encoder->shouldReceive('getName')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/IdGeneratorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/IdGeneratorTest.php
new file mode 100644
index 0000000..dfea580
--- /dev/null
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/IdGeneratorTest.php
@@ -0,0 +1,32 @@
+assertEquals('example.net', $idGenerator->getIdRight());
+
+ $idGenerator->setIdRight('example.com');
+ $this->assertEquals('example.com', $idGenerator->getIdRight());
+ }
+
+ public function testIdGenerateId()
+ {
+ $idGenerator = new Swift_Mime_IdGenerator('example.net');
+ $emailValidator = new EmailValidator();
+
+ $id = $idGenerator->generateId();
+ $this->assertTrue($emailValidator->isValid($id, new RFCValidation()));
+ $this->assertRegExp('/^.{32}@example.net$/', $id);
+
+ $anotherId = $idGenerator->generateId();
+ $this->assertNotEquals($id, $anotherId);
+ }
+}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/MimePartTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/MimePartTest.php
index 738ac68..4575505 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/MimePartTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/MimePartTest.php
@@ -1,14 +1,15 @@
_createMimePart($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(
- Swift_Mime_MimeEntity::LEVEL_ALTERNATIVE, $part->getNestingLevel()
+ Swift_Mime_SimpleMimeEntity::LEVEL_ALTERNATIVE, $part->getNestingLevel()
);
}
@@ -26,108 +27,108 @@ public function testCharsetIsReturnedFromHeader()
must be assumed in the absence of a charset parameter, is US-ASCII.
*/
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('charset' => 'iso-8859-1')
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['charset' => 'iso-8859-1']
);
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('iso-8859-1', $part->getCharset());
}
public function testCharsetIsSetInHeader()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('charset' => 'iso-8859-1'), false
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['charset' => 'iso-8859-1'], false
);
$cType->shouldReceive('setParameter')->once()->with('charset', 'utf-8');
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$part->setCharset('utf-8');
}
public function testCharsetIsSetInHeaderIfPassedToSetBody()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('charset' => 'iso-8859-1'), false
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['charset' => 'iso-8859-1'], false
);
$cType->shouldReceive('setParameter')->once()->with('charset', 'utf-8');
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$part->setBody('', 'text/plian', 'utf-8');
}
public function testSettingCharsetNotifiesEncoder()
{
- $encoder = $this->_createEncoder('quoted-printable', false);
+ $encoder = $this->createEncoder('quoted-printable', false);
$encoder->expects($this->once())
->method('charsetChanged')
->with('utf-8');
- $part = $this->_createMimePart($this->_createHeaderSet(),
- $encoder, $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet(),
+ $encoder, $this->createCache()
);
$part->setCharset('utf-8');
}
public function testSettingCharsetNotifiesHeaders()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('charsetChanged')
->zeroOrMoreTimes()
->with('utf-8');
- $part = $this->_createMimePart($headers, $this->_createEncoder(),
- $this->_createCache()
+ $part = $this->createMimePart($headers, $this->createEncoder(),
+ $this->createCache()
);
$part->setCharset('utf-8');
}
public function testSettingCharsetNotifiesChildren()
{
- $child = $this->_createChild(0, '', false);
+ $child = $this->createChild(0, '', false);
$child->shouldReceive('charsetChanged')
->once()
->with('windows-874');
- $part = $this->_createMimePart($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
- $part->setChildren(array($child));
+ $part->setChildren([$child]);
$part->setCharset('windows-874');
}
public function testCharsetChangeUpdatesCharset()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('charset' => 'iso-8859-1'), false
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['charset' => 'iso-8859-1'], false
);
$cType->shouldReceive('setParameter')->once()->with('charset', 'utf-8');
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$part->charsetChanged('utf-8');
}
public function testSettingCharsetClearsCache()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('toString')
->zeroOrMoreTimes()
->andReturn("Content-Type: text/plain; charset=utf-8\r\n");
- $cache = $this->_createCache(false);
+ $cache = $this->createCache(false);
- $entity = $this->_createEntity($headers, $this->_createEncoder(),
+ $entity = $this->createEntity($headers, $this->createEncoder(),
$cache
);
@@ -147,24 +148,24 @@ public function testFormatIsReturnedFromHeader()
/* -- RFC 3676.
*/
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('format' => 'flowed')
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['format' => 'flowed']
);
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('flowed', $part->getFormat());
}
public function testFormatIsSetInHeader()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain', array(), false);
+ $cType = $this->createHeader('Content-Type', 'text/plain', [], false);
$cType->shouldReceive('setParameter')->once()->with('format', 'fixed');
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$part->setFormat('fixed');
}
@@ -174,44 +175,44 @@ public function testDelSpIsReturnedFromHeader()
/* -- RFC 3676.
*/
- $cType = $this->_createHeader('Content-Type', 'text/plain',
- array('delsp' => 'no')
+ $cType = $this->createHeader('Content-Type', 'text/plain',
+ ['delsp' => 'no']
);
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertFalse($part->getDelSp());
}
public function testDelSpIsSetInHeader()
{
- $cType = $this->_createHeader('Content-Type', 'text/plain', array(), false);
+ $cType = $this->createHeader('Content-Type', 'text/plain', [], false);
$cType->shouldReceive('setParameter')->once()->with('delsp', 'yes');
- $part = $this->_createMimePart($this->_createHeaderSet(array(
- 'Content-Type' => $cType, )),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet([
+ 'Content-Type' => $cType, ]),
+ $this->createEncoder(), $this->createCache()
);
$part->setDelSp(true);
}
public function testFluidInterface()
{
- $part = $this->_createMimePart($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $part = $this->createMimePart($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertSame($part,
$part
->setContentType('text/plain')
- ->setEncoder($this->_createEncoder())
+ ->setEncoder($this->createEncoder())
->setId('foo@bar')
->setDescription('my description')
->setMaxLineLength(998)
->setBody('xx')
->setBoundary('xyz')
- ->setChildren(array())
+ ->setChildren([])
->setCharset('utf-8')
->setFormat('flowed')
->setDelSp(true)
@@ -219,13 +220,15 @@ public function testFluidInterface()
}
//abstract
- protected function _createEntity($headers, $encoder, $cache)
+ protected function createEntity($headers, $encoder, $cache)
{
- return $this->_createMimePart($headers, $encoder, $cache);
+ return $this->createMimePart($headers, $encoder, $cache);
}
- protected function _createMimePart($headers, $encoder, $cache)
+ protected function createMimePart($headers, $encoder, $cache)
{
- return new Swift_Mime_MimePart($headers, $encoder, $cache, new Swift_Mime_Grammar());
+ $idGenerator = new Swift_Mime_IdGenerator('example.com');
+
+ return new Swift_Mime_MimePart($headers, $encoder, $cache, $idGenerator);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderFactoryTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderFactoryTest.php
index 6a87abf..6bc825e 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderFactoryTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderFactoryTest.php
@@ -1,165 +1,168 @@
_factory = $this->_createFactory();
+ $this->factory = $this->createFactory();
}
public function testMailboxHeaderIsCorrectType()
{
- $header = $this->_factory->createMailboxHeader('X-Foo');
+ $header = $this->factory->createMailboxHeader('X-Foo');
$this->assertInstanceOf('Swift_Mime_Headers_MailboxHeader', $header);
}
public function testMailboxHeaderHasCorrectName()
{
- $header = $this->_factory->createMailboxHeader('X-Foo');
+ $header = $this->factory->createMailboxHeader('X-Foo');
$this->assertEquals('X-Foo', $header->getFieldName());
}
public function testMailboxHeaderHasCorrectModel()
{
- $header = $this->_factory->createMailboxHeader('X-Foo',
- array('foo@bar' => 'FooBar')
+ $header = $this->factory->createMailboxHeader('X-Foo',
+ ['foo@bar' => 'FooBar']
);
- $this->assertEquals(array('foo@bar' => 'FooBar'), $header->getFieldBodyModel());
+ $this->assertEquals(['foo@bar' => 'FooBar'], $header->getFieldBodyModel());
}
public function testDateHeaderHasCorrectType()
{
- $header = $this->_factory->createDateHeader('X-Date');
+ $header = $this->factory->createDateHeader('X-Date');
$this->assertInstanceOf('Swift_Mime_Headers_DateHeader', $header);
}
public function testDateHeaderHasCorrectName()
{
- $header = $this->_factory->createDateHeader('X-Date');
+ $header = $this->factory->createDateHeader('X-Date');
$this->assertEquals('X-Date', $header->getFieldName());
}
public function testDateHeaderHasCorrectModel()
{
- $header = $this->_factory->createDateHeader('X-Date', 123);
- $this->assertEquals(123, $header->getFieldBodyModel());
+ $dateTime = new \DateTimeImmutable();
+ $header = $this->factory->createDateHeader('X-Date', $dateTime);
+ $this->assertEquals($dateTime, $header->getFieldBodyModel());
}
public function testTextHeaderHasCorrectType()
{
- $header = $this->_factory->createTextHeader('X-Foo');
+ $header = $this->factory->createTextHeader('X-Foo');
$this->assertInstanceOf('Swift_Mime_Headers_UnstructuredHeader', $header);
}
public function testTextHeaderHasCorrectName()
{
- $header = $this->_factory->createTextHeader('X-Foo');
+ $header = $this->factory->createTextHeader('X-Foo');
$this->assertEquals('X-Foo', $header->getFieldName());
}
public function testTextHeaderHasCorrectModel()
{
- $header = $this->_factory->createTextHeader('X-Foo', 'bar');
+ $header = $this->factory->createTextHeader('X-Foo', 'bar');
$this->assertEquals('bar', $header->getFieldBodyModel());
}
public function testParameterizedHeaderHasCorrectType()
{
- $header = $this->_factory->createParameterizedHeader('X-Foo');
+ $header = $this->factory->createParameterizedHeader('X-Foo');
$this->assertInstanceOf('Swift_Mime_Headers_ParameterizedHeader', $header);
}
public function testParameterizedHeaderHasCorrectName()
{
- $header = $this->_factory->createParameterizedHeader('X-Foo');
+ $header = $this->factory->createParameterizedHeader('X-Foo');
$this->assertEquals('X-Foo', $header->getFieldName());
}
public function testParameterizedHeaderHasCorrectModel()
{
- $header = $this->_factory->createParameterizedHeader('X-Foo', 'bar');
+ $header = $this->factory->createParameterizedHeader('X-Foo', 'bar');
$this->assertEquals('bar', $header->getFieldBodyModel());
}
public function testParameterizedHeaderHasCorrectParams()
{
- $header = $this->_factory->createParameterizedHeader('X-Foo', 'bar',
- array('zip' => 'button')
+ $header = $this->factory->createParameterizedHeader('X-Foo', 'bar',
+ ['zip' => 'button']
);
- $this->assertEquals(array('zip' => 'button'), $header->getParameters());
+ $this->assertEquals(['zip' => 'button'], $header->getParameters());
}
public function testIdHeaderHasCorrectType()
{
- $header = $this->_factory->createIdHeader('X-ID');
+ $header = $this->factory->createIdHeader('X-ID');
$this->assertInstanceOf('Swift_Mime_Headers_IdentificationHeader', $header);
}
public function testIdHeaderHasCorrectName()
{
- $header = $this->_factory->createIdHeader('X-ID');
+ $header = $this->factory->createIdHeader('X-ID');
$this->assertEquals('X-ID', $header->getFieldName());
}
public function testIdHeaderHasCorrectModel()
{
- $header = $this->_factory->createIdHeader('X-ID', 'xyz@abc');
- $this->assertEquals(array('xyz@abc'), $header->getFieldBodyModel());
+ $header = $this->factory->createIdHeader('X-ID', 'xyz@abc');
+ $this->assertEquals(['xyz@abc'], $header->getFieldBodyModel());
}
public function testPathHeaderHasCorrectType()
{
- $header = $this->_factory->createPathHeader('X-Path');
+ $header = $this->factory->createPathHeader('X-Path');
$this->assertInstanceOf('Swift_Mime_Headers_PathHeader', $header);
}
public function testPathHeaderHasCorrectName()
{
- $header = $this->_factory->createPathHeader('X-Path');
+ $header = $this->factory->createPathHeader('X-Path');
$this->assertEquals('X-Path', $header->getFieldName());
}
public function testPathHeaderHasCorrectModel()
{
- $header = $this->_factory->createPathHeader('X-Path', 'foo@bar');
+ $header = $this->factory->createPathHeader('X-Path', 'foo@bar');
$this->assertEquals('foo@bar', $header->getFieldBodyModel());
}
public function testCharsetChangeNotificationNotifiesEncoders()
{
- $encoder = $this->_createHeaderEncoder();
+ $encoder = $this->createHeaderEncoder();
$encoder->expects($this->once())
->method('charsetChanged')
->with('utf-8');
- $paramEncoder = $this->_createParamEncoder();
+ $paramEncoder = $this->createParamEncoder();
$paramEncoder->expects($this->once())
->method('charsetChanged')
->with('utf-8');
- $factory = $this->_createFactory($encoder, $paramEncoder);
+ $factory = $this->createFactory($encoder, $paramEncoder);
$factory->charsetChanged('utf-8');
}
- private function _createFactory($encoder = null, $paramEncoder = null)
+ private function createFactory($encoder = null, $paramEncoder = null)
{
return new Swift_Mime_SimpleHeaderFactory(
$encoder
- ? $encoder : $this->_createHeaderEncoder(),
+ ? $encoder : $this->createHeaderEncoder(),
$paramEncoder
- ? $paramEncoder : $this->_createParamEncoder(),
- new Swift_Mime_Grammar()
+ ? $paramEncoder : $this->createParamEncoder(),
+ new EmailValidator()
);
}
- private function _createHeaderEncoder()
+ private function createHeaderEncoder()
{
return $this->getMockBuilder('Swift_Mime_HeaderEncoder')->getMock();
}
- private function _createParamEncoder()
+ private function createParamEncoder()
{
return $this->getMockBuilder('Swift_Encoder')->getMock();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderSetTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
index bed1c13..4ddbff7 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
@@ -1,215 +1,219 @@
_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createMailboxHeader')
- ->with('From', array('person@domain' => 'Person'))
- ->will($this->returnValue($this->_createHeader('From')));
+ ->with('From', ['person@domain' => 'Person'])
+ ->will($this->returnValue($this->createHeader('From')));
- $set = $this->_createSet($factory);
- $set->addMailboxHeader('From', array('person@domain' => 'Person'));
+ $set = $this->createSet($factory);
+ $set->addMailboxHeader('From', ['person@domain' => 'Person']);
}
public function testAddDateHeaderDelegatesToFactory()
{
- $factory = $this->_createFactory();
+ $dateTime = new DateTimeImmutable();
+
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createDateHeader')
- ->with('Date', 1234)
- ->will($this->returnValue($this->_createHeader('Date')));
+ ->with('Date', $dateTime)
+ ->will($this->returnValue($this->createHeader('Date')));
- $set = $this->_createSet($factory);
- $set->addDateHeader('Date', 1234);
+ $set = $this->createSet($factory);
+ $set->addDateHeader('Date', $dateTime);
}
public function testAddTextHeaderDelegatesToFactory()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createTextHeader')
->with('Subject', 'some text')
- ->will($this->returnValue($this->_createHeader('Subject')));
+ ->will($this->returnValue($this->createHeader('Subject')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Subject', 'some text');
}
public function testAddParameterizedHeaderDelegatesToFactory()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createParameterizedHeader')
- ->with('Content-Type', 'text/plain', array('charset' => 'utf-8'))
- ->will($this->returnValue($this->_createHeader('Content-Type')));
+ ->with('Content-Type', 'text/plain', ['charset' => 'utf-8'])
+ ->will($this->returnValue($this->createHeader('Content-Type')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addParameterizedHeader('Content-Type', 'text/plain',
- array('charset' => 'utf-8')
+ ['charset' => 'utf-8']
);
}
public function testAddIdHeaderDelegatesToFactory()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createIdHeader')
->with('Message-ID', 'some@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
}
public function testAddPathHeaderDelegatesToFactory()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createPathHeader')
->with('Return-Path', 'some@path')
- ->will($this->returnValue($this->_createHeader('Return-Path')));
+ ->will($this->returnValue($this->createHeader('Return-Path')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addPathHeader('Return-Path', 'some@path');
}
public function testHasReturnsFalseWhenNoHeaders()
{
- $set = $this->_createSet($this->_createFactory());
+ $set = $this->createSet($this->createFactory());
$this->assertFalse($set->has('Some-Header'));
}
public function testAddedMailboxHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createMailboxHeader')
- ->with('From', array('person@domain' => 'Person'))
- ->will($this->returnValue($this->_createHeader('From')));
+ ->with('From', ['person@domain' => 'Person'])
+ ->will($this->returnValue($this->createHeader('From')));
- $set = $this->_createSet($factory);
- $set->addMailboxHeader('From', array('person@domain' => 'Person'));
+ $set = $this->createSet($factory);
+ $set->addMailboxHeader('From', ['person@domain' => 'Person']);
$this->assertTrue($set->has('From'));
}
public function testAddedDateHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $dateTime = new DateTimeImmutable();
+
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createDateHeader')
- ->with('Date', 1234)
- ->will($this->returnValue($this->_createHeader('Date')));
+ ->with('Date', $dateTime)
+ ->will($this->returnValue($this->createHeader('Date')));
- $set = $this->_createSet($factory);
- $set->addDateHeader('Date', 1234);
+ $set = $this->createSet($factory);
+ $set->addDateHeader('Date', $dateTime);
$this->assertTrue($set->has('Date'));
}
public function testAddedTextHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createTextHeader')
->with('Subject', 'some text')
- ->will($this->returnValue($this->_createHeader('Subject')));
+ ->will($this->returnValue($this->createHeader('Subject')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Subject', 'some text');
$this->assertTrue($set->has('Subject'));
}
public function testAddedParameterizedHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createParameterizedHeader')
- ->with('Content-Type', 'text/plain', array('charset' => 'utf-8'))
- ->will($this->returnValue($this->_createHeader('Content-Type')));
+ ->with('Content-Type', 'text/plain', ['charset' => 'utf-8'])
+ ->will($this->returnValue($this->createHeader('Content-Type')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addParameterizedHeader('Content-Type', 'text/plain',
- array('charset' => 'utf-8')
+ ['charset' => 'utf-8']
);
$this->assertTrue($set->has('Content-Type'));
}
public function testAddedIdHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createIdHeader')
->with('Message-ID', 'some@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertTrue($set->has('Message-ID'));
}
public function testAddedPathHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createPathHeader')
->with('Return-Path', 'some@path')
- ->will($this->returnValue($this->_createHeader('Return-Path')));
+ ->will($this->returnValue($this->createHeader('Return-Path')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addPathHeader('Return-Path', 'some@path');
$this->assertTrue($set->has('Return-Path'));
}
public function testNewlySetHeaderIsSeenByHas()
{
- $factory = $this->_createFactory();
- $header = $this->_createHeader('X-Foo', 'bar');
- $set = $this->_createSet($factory);
+ $factory = $this->createFactory();
+ $header = $this->createHeader('X-Foo', 'bar');
+ $set = $this->createSet($factory);
$set->set($header);
$this->assertTrue($set->has('X-Foo'));
}
public function testHasCanAcceptOffset()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createIdHeader')
->with('Message-ID', 'some@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertTrue($set->has('Message-ID', 0));
}
public function testHasWithIllegalOffsetReturnsFalse()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createIdHeader')
->with('Message-ID', 'some@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertFalse($set->has('Message-ID', 1));
}
public function testHasCanDistinguishMultipleHeaders()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
$factory->expects($this->at(1))
->method('createIdHeader')
->with('Message-ID', 'other@id')
- ->will($this->returnValue($this->_createHeader('Message-ID')));
+ ->will($this->returnValue($this->createHeader('Message-ID')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$this->assertTrue($set->has('Message-ID', 1));
@@ -217,24 +221,24 @@ public function testHasCanDistinguishMultipleHeaders()
public function testGetWithUnspecifiedOffset()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertSame($header, $set->get('Message-ID'));
}
public function testGetWithSpeiciedOffset()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Message-ID');
- $header2 = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Message-ID');
+ $header2 = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -248,7 +252,7 @@ public function testGetWithSpeiciedOffset()
->with('Message-ID', 'more@id')
->will($this->returnValue($header2));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$set->addIdHeader('Message-ID', 'more@id');
@@ -257,16 +261,16 @@ public function testGetWithSpeiciedOffset()
public function testGetReturnsNullIfHeaderNotSet()
{
- $set = $this->_createSet($this->_createFactory());
+ $set = $this->createSet($this->createFactory());
$this->assertNull($set->get('Message-ID', 99));
}
public function testGetAllReturnsAllHeadersMatchingName()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Message-ID');
- $header2 = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Message-ID');
+ $header2 = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -280,22 +284,22 @@ public function testGetAllReturnsAllHeadersMatchingName()
->with('Message-ID', 'more@id')
->will($this->returnValue($header2));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$set->addIdHeader('Message-ID', 'more@id');
- $this->assertEquals(array($header0, $header1, $header2),
+ $this->assertEquals([$header0, $header1, $header2],
$set->getAll('Message-ID')
);
}
public function testGetAllReturnsAllHeadersIfNoArguments()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Subject');
- $header2 = $this->_createHeader('To');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Subject');
+ $header2 = $this->createHeader('To');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -309,32 +313,32 @@ public function testGetAllReturnsAllHeadersIfNoArguments()
->with('To', 'person@example.org')
->will($this->returnValue($header2));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Subject', 'thing');
$set->addIdHeader('To', 'person@example.org');
- $this->assertEquals(array($header0, $header1, $header2),
+ $this->assertEquals([$header0, $header1, $header2],
$set->getAll()
);
}
public function testGetAllReturnsEmptyArrayIfNoneSet()
{
- $set = $this->_createSet($this->_createFactory());
- $this->assertEquals(array(), $set->getAll('Received'));
+ $set = $this->createSet($this->createFactory());
+ $this->assertEquals([], $set->getAll('Received'));
}
public function testRemoveWithUnspecifiedOffset()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->remove('Message-ID');
$this->assertFalse($set->has('Message-ID'));
@@ -342,9 +346,9 @@ public function testRemoveWithUnspecifiedOffset()
public function testRemoveWithSpecifiedIndexRemovesHeader()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -354,7 +358,7 @@ public function testRemoveWithSpecifiedIndexRemovesHeader()
->with('Message-ID', 'other@id')
->will($this->returnValue($header1));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$set->remove('Message-ID', 0);
@@ -368,9 +372,9 @@ public function testRemoveWithSpecifiedIndexRemovesHeader()
public function testRemoveWithSpecifiedIndexLeavesOtherHeaders()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -380,7 +384,7 @@ public function testRemoveWithSpecifiedIndexLeavesOtherHeaders()
->with('Message-ID', 'other@id')
->will($this->returnValue($header1));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$set->remove('Message-ID', 1);
@@ -389,14 +393,14 @@ public function testRemoveWithSpecifiedIndexLeavesOtherHeaders()
public function testRemoveWithInvalidOffsetDoesNothing()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->remove('Message-ID', 50);
$this->assertTrue($set->has('Message-ID'));
@@ -404,9 +408,9 @@ public function testRemoveWithInvalidOffsetDoesNothing()
public function testRemoveAllRemovesAllHeadersWithName()
{
- $header0 = $this->_createHeader('Message-ID');
- $header1 = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header0 = $this->createHeader('Message-ID');
+ $header1 = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
@@ -416,7 +420,7 @@ public function testRemoveAllRemovesAllHeadersWithName()
->with('Message-ID', 'other@id')
->will($this->returnValue($header1));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->addIdHeader('Message-ID', 'other@id');
$set->removeAll('Message-ID');
@@ -426,56 +430,56 @@ public function testRemoveAllRemovesAllHeadersWithName()
public function testHasIsNotCaseSensitive()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertTrue($set->has('message-id'));
}
public function testGetIsNotCaseSensitive()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$this->assertSame($header, $set->get('message-id'));
}
public function testGetAllIsNotCaseSensitive()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
- $this->assertEquals(array($header), $set->getAll('message-id'));
+ $this->assertEquals([$header], $set->getAll('message-id'));
}
public function testRemoveIsNotCaseSensitive()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->remove('message-id');
$this->assertFalse($set->has('Message-ID'));
@@ -483,39 +487,32 @@ public function testRemoveIsNotCaseSensitive()
public function testRemoveAllIsNotCaseSensitive()
{
- $header = $this->_createHeader('Message-ID');
- $factory = $this->_createFactory();
+ $header = $this->createHeader('Message-ID');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createIdHeader')
->with('Message-ID', 'some@id')
->will($this->returnValue($header));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addIdHeader('Message-ID', 'some@id');
$set->removeAll('message-id');
$this->assertFalse($set->has('Message-ID'));
}
- public function testNewInstance()
- {
- $set = $this->_createSet($this->_createFactory());
- $instance = $set->newInstance();
- $this->assertInstanceOf('Swift_Mime_HeaderSet', $instance);
- }
-
public function testToStringJoinsHeadersTogether()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Foo', 'bar')
- ->will($this->returnValue($this->_createHeader('Foo', 'bar')));
+ ->will($this->returnValue($this->createHeader('Foo', 'bar')));
$factory->expects($this->at(1))
->method('createTextHeader')
->with('Zip', 'buttons')
- ->will($this->returnValue($this->_createHeader('Zip', 'buttons')));
+ ->will($this->returnValue($this->createHeader('Zip', 'buttons')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Foo', 'bar');
$set->addTextHeader('Zip', 'buttons');
$this->assertEquals(
@@ -527,17 +524,17 @@ public function testToStringJoinsHeadersTogether()
public function testHeadersWithoutBodiesAreNotDisplayed()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Foo', 'bar')
- ->will($this->returnValue($this->_createHeader('Foo', 'bar')));
+ ->will($this->returnValue($this->createHeader('Foo', 'bar')));
$factory->expects($this->at(1))
->method('createTextHeader')
->with('Zip', '')
- ->will($this->returnValue($this->_createHeader('Zip', '')));
+ ->will($this->returnValue($this->createHeader('Zip', '')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Foo', 'bar');
$set->addTextHeader('Zip', '');
$this->assertEquals(
@@ -548,20 +545,20 @@ public function testHeadersWithoutBodiesAreNotDisplayed()
public function testHeadersWithoutBodiesCanBeForcedToDisplay()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Foo', '')
- ->will($this->returnValue($this->_createHeader('Foo', '')));
+ ->will($this->returnValue($this->createHeader('Foo', '')));
$factory->expects($this->at(1))
->method('createTextHeader')
->with('Zip', '')
- ->will($this->returnValue($this->_createHeader('Zip', '')));
+ ->will($this->returnValue($this->createHeader('Zip', '')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Foo', '');
$set->addTextHeader('Zip', '');
- $set->setAlwaysDisplayed(array('Foo', 'Zip'));
+ $set->setAlwaysDisplayed(['Foo', 'Zip']);
$this->assertEquals(
"Foo: \r\n".
"Zip: \r\n",
@@ -571,26 +568,26 @@ public function testHeadersWithoutBodiesCanBeForcedToDisplay()
public function testHeaderSequencesCanBeSpecified()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Third', 'three')
- ->will($this->returnValue($this->_createHeader('Third', 'three')));
+ ->will($this->returnValue($this->createHeader('Third', 'three')));
$factory->expects($this->at(1))
->method('createTextHeader')
->with('First', 'one')
- ->will($this->returnValue($this->_createHeader('First', 'one')));
+ ->will($this->returnValue($this->createHeader('First', 'one')));
$factory->expects($this->at(2))
->method('createTextHeader')
->with('Second', 'two')
- ->will($this->returnValue($this->_createHeader('Second', 'two')));
+ ->will($this->returnValue($this->createHeader('Second', 'two')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Third', 'three');
$set->addTextHeader('First', 'one');
$set->addTextHeader('Second', 'two');
- $set->defineOrdering(array('First', 'Second', 'Third'));
+ $set->defineOrdering(['First', 'Second', 'Third']);
$this->assertEquals(
"First: one\r\n".
@@ -602,36 +599,36 @@ public function testHeaderSequencesCanBeSpecified()
public function testUnsortedHeadersAppearAtEnd()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Fourth', 'four')
- ->will($this->returnValue($this->_createHeader('Fourth', 'four')));
+ ->will($this->returnValue($this->createHeader('Fourth', 'four')));
$factory->expects($this->at(1))
->method('createTextHeader')
->with('Fifth', 'five')
- ->will($this->returnValue($this->_createHeader('Fifth', 'five')));
+ ->will($this->returnValue($this->createHeader('Fifth', 'five')));
$factory->expects($this->at(2))
->method('createTextHeader')
->with('Third', 'three')
- ->will($this->returnValue($this->_createHeader('Third', 'three')));
+ ->will($this->returnValue($this->createHeader('Third', 'three')));
$factory->expects($this->at(3))
->method('createTextHeader')
->with('First', 'one')
- ->will($this->returnValue($this->_createHeader('First', 'one')));
+ ->will($this->returnValue($this->createHeader('First', 'one')));
$factory->expects($this->at(4))
->method('createTextHeader')
->with('Second', 'two')
- ->will($this->returnValue($this->_createHeader('Second', 'two')));
+ ->will($this->returnValue($this->createHeader('Second', 'two')));
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Fourth', 'four');
$set->addTextHeader('Fifth', 'five');
$set->addTextHeader('Third', 'three');
$set->addTextHeader('First', 'one');
$set->addTextHeader('Second', 'two');
- $set->defineOrdering(array('First', 'Second', 'Third'));
+ $set->defineOrdering(['First', 'Second', 'Third']);
$this->assertEquals(
"First: one\r\n".
@@ -645,9 +642,9 @@ public function testUnsortedHeadersAppearAtEnd()
public function testSettingCharsetNotifiesAlreadyExistingHeaders()
{
- $subject = $this->_createHeader('Subject', 'some text');
- $xHeader = $this->_createHeader('X-Header', 'some text');
- $factory = $this->_createFactory();
+ $subject = $this->createHeader('Subject', 'some text');
+ $xHeader = $this->createHeader('X-Header', 'some text');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Subject', 'some text')
@@ -663,7 +660,7 @@ public function testSettingCharsetNotifiesAlreadyExistingHeaders()
->method('setCharset')
->with('utf-8');
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Subject', 'some text');
$set->addTextHeader('X-Header', 'some text');
@@ -672,9 +669,9 @@ public function testSettingCharsetNotifiesAlreadyExistingHeaders()
public function testCharsetChangeNotifiesAlreadyExistingHeaders()
{
- $subject = $this->_createHeader('Subject', 'some text');
- $xHeader = $this->_createHeader('X-Header', 'some text');
- $factory = $this->_createFactory();
+ $subject = $this->createHeader('Subject', 'some text');
+ $xHeader = $this->createHeader('X-Header', 'some text');
+ $factory = $this->createFactory();
$factory->expects($this->at(0))
->method('createTextHeader')
->with('Subject', 'some text')
@@ -690,7 +687,7 @@ public function testCharsetChangeNotifiesAlreadyExistingHeaders()
->method('setCharset')
->with('utf-8');
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->addTextHeader('Subject', 'some text');
$set->addTextHeader('X-Header', 'some text');
@@ -699,27 +696,27 @@ public function testCharsetChangeNotifiesAlreadyExistingHeaders()
public function testCharsetChangeNotifiesFactory()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('charsetChanged')
->with('utf-8');
- $set = $this->_createSet($factory);
+ $set = $this->createSet($factory);
$set->setCharset('utf-8');
}
- private function _createSet($factory)
+ private function createSet($factory)
{
return new Swift_Mime_SimpleHeaderSet($factory);
}
- private function _createFactory()
+ private function createFactory()
{
- return $this->getMockBuilder('Swift_Mime_HeaderFactory')->getMock();
+ return $this->getMockBuilder('Swift_Mime_SimpleHeaderFactory')->disableOriginalConstructor()->getMock();
}
- private function _createHeader($name, $body = '')
+ private function createHeader($name, $body = '')
{
$header = $this->getMockBuilder('Swift_Mime_Header')->getMock();
$header->expects($this->any())
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMessageTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMessageTest.php
index e5d225c..c5662cb 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMessageTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMessageTest.php
@@ -1,72 +1,80 @@
addToAssertionCount(1);
}
public function testNestingLevelIsTop()
{
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(
- Swift_Mime_MimeEntity::LEVEL_TOP, $message->getNestingLevel()
+ Swift_Mime_SimpleMimeEntity::LEVEL_TOP, $message->getNestingLevel()
);
}
public function testDateIsReturnedFromHeader()
{
- $date = $this->_createHeader('Date', 123);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Date' => $date)),
- $this->_createEncoder(), $this->_createCache()
+ $dateTime = new DateTimeImmutable();
+
+ $date = $this->createHeader('Date', $dateTime);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Date' => $date]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(123, $message->getDate());
+ $this->assertEquals($dateTime, $message->getDate());
}
public function testDateIsSetInHeader()
{
- $date = $this->_createHeader('Date', 123, array(), false);
+ $dateTime = new DateTimeImmutable();
+
+ $date = $this->createHeader('Date', new DateTimeImmutable(), [], false);
$date->shouldReceive('setFieldBodyModel')
->once()
- ->with(1234);
+ ->with($dateTime);
$date->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Date' => $date)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Date' => $date]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setDate(1234);
+ $message->setDate($dateTime);
}
public function testDateHeaderIsCreatedIfNonePresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $dateTime = new DateTimeImmutable();
+
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addDateHeader')
->once()
- ->with('Date', 1234);
+ ->with('Date', $dateTime);
$headers->shouldReceive('addDateHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
- $message->setDate(1234);
+ $message->setDate($dateTime);
}
public function testDateHeaderIsAddedDuringConstruction()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addDateHeader')
->once()
- ->with('Date', '/^[0-9]+$/D');
+ ->with('Date', Mockery::type('DateTimeImmutable'));
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
}
@@ -79,39 +87,39 @@ public function testIdIsReturnedFromHeader()
identical to the "Message-ID" header field
*/
- $messageId = $this->_createHeader('Message-ID', 'a@b');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Message-ID' => $messageId)),
- $this->_createEncoder(), $this->_createCache()
+ $messageId = $this->createHeader('Message-ID', 'a@b');
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Message-ID' => $messageId]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('a@b', $message->getId());
}
public function testIdIsSetInHeader()
{
- $messageId = $this->_createHeader('Message-ID', 'a@b', array(), false);
+ $messageId = $this->createHeader('Message-ID', 'a@b', [], false);
$messageId->shouldReceive('setFieldBodyModel')
->once()
->with('x@y');
$messageId->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Message-ID' => $messageId)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Message-ID' => $messageId]),
+ $this->createEncoder(), $this->createCache()
);
$message->setId('x@y');
}
public function testIdIsAutoGenerated()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addIdHeader')
->once()
->with('Message-ID', '/^.*?@.*?$/D');
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
}
@@ -120,39 +128,39 @@ public function testSubjectIsReturnedFromHeader()
/* -- RFC 2822, 3.6.5.
*/
- $subject = $this->_createHeader('Subject', 'example subject');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Subject' => $subject)),
- $this->_createEncoder(), $this->_createCache()
+ $subject = $this->createHeader('Subject', 'example subject');
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Subject' => $subject]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('example subject', $message->getSubject());
}
public function testSubjectIsSetInHeader()
{
- $subject = $this->_createHeader('Subject', '', array(), false);
+ $subject = $this->createHeader('Subject', '', [], false);
$subject->shouldReceive('setFieldBodyModel')
->once()
->with('foo');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Subject' => $subject)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Subject' => $subject]),
+ $this->createEncoder(), $this->createCache()
);
$message->setSubject('foo');
}
public function testSubjectHeaderIsCreatedIfNotPresent()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addTextHeader')
->once()
->with('Subject', 'example subject');
$headers->shouldReceive('addTextHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setSubject('example subject');
}
@@ -162,37 +170,37 @@ public function testReturnPathIsReturnedFromHeader()
/* -- RFC 2822, 3.6.7.
*/
- $path = $this->_createHeader('Return-Path', 'bounces@domain');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Return-Path' => $path)),
- $this->_createEncoder(), $this->_createCache()
+ $path = $this->createHeader('Return-Path', 'bounces@domain');
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Return-Path' => $path]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('bounces@domain', $message->getReturnPath());
}
public function testReturnPathIsSetInHeader()
{
- $path = $this->_createHeader('Return-Path', '', array(), false);
+ $path = $this->createHeader('Return-Path', '', [], false);
$path->shouldReceive('setFieldBodyModel')
->once()
->with('bounces@domain');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Return-Path' => $path)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Return-Path' => $path]),
+ $this->createEncoder(), $this->createCache()
);
$message->setReturnPath('bounces@domain');
}
public function testReturnPathHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addPathHeader')
->once()
->with('Return-Path', 'bounces@domain');
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setReturnPath('bounces@domain');
}
@@ -202,56 +210,56 @@ public function testSenderIsReturnedFromHeader()
/* -- RFC 2822, 3.6.2.
*/
- $sender = $this->_createHeader('Sender', array('sender@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Sender' => $sender)),
- $this->_createEncoder(), $this->_createCache()
+ $sender = $this->createHeader('Sender', ['sender@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Sender' => $sender]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('sender@domain' => 'Name'), $message->getSender());
+ $this->assertEquals(['sender@domain' => 'Name'], $message->getSender());
}
public function testSenderIsSetInHeader()
{
- $sender = $this->_createHeader('Sender', array('sender@domain' => 'Name'),
- array(), false
+ $sender = $this->createHeader('Sender', ['sender@domain' => 'Name'],
+ [], false
);
$sender->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Sender' => $sender)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Sender' => $sender]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setSender(array('other@domain' => 'Other'));
+ $message->setSender(['other@domain' => 'Other']);
}
public function testSenderHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('Sender', (array) 'sender@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setSender('sender@domain');
}
public function testNameCanBeUsedInSenderHeader()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('Sender', array('sender@domain' => 'Name'));
+ ->with('Sender', ['sender@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setSender('sender@domain', 'Name');
}
@@ -261,72 +269,72 @@ public function testFromIsReturnedFromHeader()
/* -- RFC 2822, 3.6.2.
*/
- $from = $this->_createHeader('From', array('from@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('From' => $from)),
- $this->_createEncoder(), $this->_createCache()
+ $from = $this->createHeader('From', ['from@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['From' => $from]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('from@domain' => 'Name'), $message->getFrom());
+ $this->assertEquals(['from@domain' => 'Name'], $message->getFrom());
}
public function testFromIsSetInHeader()
{
- $from = $this->_createHeader('From', array('from@domain' => 'Name'),
- array(), false
+ $from = $this->createHeader('From', ['from@domain' => 'Name'],
+ [], false
);
$from->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('From' => $from)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['From' => $from]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setFrom(array('other@domain' => 'Other'));
+ $message->setFrom(['other@domain' => 'Other']);
}
public function testFromIsAddedToHeadersDuringAddFrom()
{
- $from = $this->_createHeader('From', array('from@domain' => 'Name'),
- array(), false
+ $from = $this->createHeader('From', ['from@domain' => 'Name'],
+ [], false
);
$from->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('from@domain' => 'Name', 'other@domain' => 'Other'));
+ ->with(['from@domain' => 'Name', 'other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('From' => $from)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['From' => $from]),
+ $this->createEncoder(), $this->createCache()
);
$message->addFrom('other@domain', 'Other');
}
public function testFromHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('From', (array) 'from@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setFrom('from@domain');
}
public function testPersonalNameCanBeUsedInFromAddress()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('From', array('from@domain' => 'Name'));
+ ->with('From', ['from@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setFrom('from@domain', 'Name');
}
@@ -336,72 +344,72 @@ public function testReplyToIsReturnedFromHeader()
/* -- RFC 2822, 3.6.2.
*/
- $reply = $this->_createHeader('Reply-To', array('reply@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Reply-To' => $reply)),
- $this->_createEncoder(), $this->_createCache()
+ $reply = $this->createHeader('Reply-To', ['reply@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Reply-To' => $reply]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('reply@domain' => 'Name'), $message->getReplyTo());
+ $this->assertEquals(['reply@domain' => 'Name'], $message->getReplyTo());
}
public function testReplyToIsSetInHeader()
{
- $reply = $this->_createHeader('Reply-To', array('reply@domain' => 'Name'),
- array(), false
+ $reply = $this->createHeader('Reply-To', ['reply@domain' => 'Name'],
+ [], false
);
$reply->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Reply-To' => $reply)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Reply-To' => $reply]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setReplyTo(array('other@domain' => 'Other'));
+ $message->setReplyTo(['other@domain' => 'Other']);
}
public function testReplyToIsAddedToHeadersDuringAddReplyTo()
{
- $replyTo = $this->_createHeader('Reply-To', array('from@domain' => 'Name'),
- array(), false
+ $replyTo = $this->createHeader('Reply-To', ['from@domain' => 'Name'],
+ [], false
);
$replyTo->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('from@domain' => 'Name', 'other@domain' => 'Other'));
+ ->with(['from@domain' => 'Name', 'other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Reply-To' => $replyTo)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Reply-To' => $replyTo]),
+ $this->createEncoder(), $this->createCache()
);
$message->addReplyTo('other@domain', 'Other');
}
public function testReplyToHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('Reply-To', (array) 'reply@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setReplyTo('reply@domain');
}
public function testNameCanBeUsedInReplyTo()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('Reply-To', array('reply@domain' => 'Name'));
+ ->with('Reply-To', ['reply@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setReplyTo('reply@domain', 'Name');
}
@@ -411,72 +419,72 @@ public function testToIsReturnedFromHeader()
/* -- RFC 2822, 3.6.3.
*/
- $to = $this->_createHeader('To', array('to@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('To' => $to)),
- $this->_createEncoder(), $this->_createCache()
+ $to = $this->createHeader('To', ['to@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['To' => $to]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('to@domain' => 'Name'), $message->getTo());
+ $this->assertEquals(['to@domain' => 'Name'], $message->getTo());
}
public function testToIsSetInHeader()
{
- $to = $this->_createHeader('To', array('to@domain' => 'Name'),
- array(), false
+ $to = $this->createHeader('To', ['to@domain' => 'Name'],
+ [], false
);
$to->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('To' => $to)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['To' => $to]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setTo(array('other@domain' => 'Other'));
+ $message->setTo(['other@domain' => 'Other']);
}
public function testToIsAddedToHeadersDuringAddTo()
{
- $to = $this->_createHeader('To', array('from@domain' => 'Name'),
- array(), false
+ $to = $this->createHeader('To', ['from@domain' => 'Name'],
+ [], false
);
$to->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('from@domain' => 'Name', 'other@domain' => 'Other'));
+ ->with(['from@domain' => 'Name', 'other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('To' => $to)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['To' => $to]),
+ $this->createEncoder(), $this->createCache()
);
$message->addTo('other@domain', 'Other');
}
public function testToHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('To', (array) 'to@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setTo('to@domain');
}
public function testNameCanBeUsedInToHeader()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('To', array('to@domain' => 'Name'));
+ ->with('To', ['to@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setTo('to@domain', 'Name');
}
@@ -486,72 +494,72 @@ public function testCcIsReturnedFromHeader()
/* -- RFC 2822, 3.6.3.
*/
- $cc = $this->_createHeader('Cc', array('cc@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Cc' => $cc)),
- $this->_createEncoder(), $this->_createCache()
+ $cc = $this->createHeader('Cc', ['cc@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Cc' => $cc]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('cc@domain' => 'Name'), $message->getCc());
+ $this->assertEquals(['cc@domain' => 'Name'], $message->getCc());
}
public function testCcIsSetInHeader()
{
- $cc = $this->_createHeader('Cc', array('cc@domain' => 'Name'),
- array(), false
+ $cc = $this->createHeader('Cc', ['cc@domain' => 'Name'],
+ [], false
);
$cc->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Cc' => $cc)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Cc' => $cc]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setCc(array('other@domain' => 'Other'));
+ $message->setCc(['other@domain' => 'Other']);
}
public function testCcIsAddedToHeadersDuringAddCc()
{
- $cc = $this->_createHeader('Cc', array('from@domain' => 'Name'),
- array(), false
+ $cc = $this->createHeader('Cc', ['from@domain' => 'Name'],
+ [], false
);
$cc->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('from@domain' => 'Name', 'other@domain' => 'Other'));
+ ->with(['from@domain' => 'Name', 'other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Cc' => $cc)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Cc' => $cc]),
+ $this->createEncoder(), $this->createCache()
);
$message->addCc('other@domain', 'Other');
}
public function testCcHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('Cc', (array) 'cc@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setCc('cc@domain');
}
public function testNameCanBeUsedInCcHeader()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('Cc', array('cc@domain' => 'Name'));
+ ->with('Cc', ['cc@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setCc('cc@domain', 'Name');
}
@@ -561,180 +569,180 @@ public function testBccIsReturnedFromHeader()
/* -- RFC 2822, 3.6.3.
*/
- $bcc = $this->_createHeader('Bcc', array('bcc@domain' => 'Name'));
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Bcc' => $bcc)),
- $this->_createEncoder(), $this->_createCache()
+ $bcc = $this->createHeader('Bcc', ['bcc@domain' => 'Name']);
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Bcc' => $bcc]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('bcc@domain' => 'Name'), $message->getBcc());
+ $this->assertEquals(['bcc@domain' => 'Name'], $message->getBcc());
}
public function testBccIsSetInHeader()
{
- $bcc = $this->_createHeader('Bcc', array('bcc@domain' => 'Name'),
- array(), false
+ $bcc = $this->createHeader('Bcc', ['bcc@domain' => 'Name'],
+ [], false
);
$bcc->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('other@domain' => 'Other'));
+ ->with(['other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Bcc' => $bcc)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Bcc' => $bcc]),
+ $this->createEncoder(), $this->createCache()
);
- $message->setBcc(array('other@domain' => 'Other'));
+ $message->setBcc(['other@domain' => 'Other']);
}
public function testBccIsAddedToHeadersDuringAddBcc()
{
- $bcc = $this->_createHeader('Bcc', array('from@domain' => 'Name'),
- array(), false
+ $bcc = $this->createHeader('Bcc', ['from@domain' => 'Name'],
+ [], false
);
$bcc->shouldReceive('setFieldBodyModel')
->once()
- ->with(array('from@domain' => 'Name', 'other@domain' => 'Other'));
+ ->with(['from@domain' => 'Name', 'other@domain' => 'Other']);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Bcc' => $bcc)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Bcc' => $bcc]),
+ $this->createEncoder(), $this->createCache()
);
$message->addBcc('other@domain', 'Other');
}
public function testBccHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('Bcc', (array) 'bcc@domain');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setBcc('bcc@domain');
}
public function testNameCanBeUsedInBcc()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
- ->with('Bcc', array('bcc@domain' => 'Name'));
+ ->with('Bcc', ['bcc@domain' => 'Name']);
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setBcc('bcc@domain', 'Name');
}
public function testPriorityIsReadFromHeader()
{
- $prio = $this->_createHeader('X-Priority', '2 (High)');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('X-Priority' => $prio)),
- $this->_createEncoder(), $this->_createCache()
+ $prio = $this->createHeader('X-Priority', '2 (High)');
+ $message = $this->createMessage(
+ $this->createHeaderSet(['X-Priority' => $prio]),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals(2, $message->getPriority());
}
public function testPriorityIsSetInHeader()
{
- $prio = $this->_createHeader('X-Priority', '2 (High)', array(), false);
+ $prio = $this->createHeader('X-Priority', '2 (High)', [], false);
$prio->shouldReceive('setFieldBodyModel')
->once()
->with('5 (Lowest)');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('X-Priority' => $prio)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['X-Priority' => $prio]),
+ $this->createEncoder(), $this->createCache()
);
$message->setPriority($message::PRIORITY_LOWEST);
}
public function testPriorityHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addTextHeader')
->once()
->with('X-Priority', '4 (Low)');
$headers->shouldReceive('addTextHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setPriority($message::PRIORITY_LOW);
}
public function testReadReceiptAddressReadFromHeader()
{
- $rcpt = $this->_createHeader('Disposition-Notification-To',
- array('chris@swiftmailer.org' => 'Chris')
+ $rcpt = $this->createHeader('Disposition-Notification-To',
+ ['chris@swiftmailer.org' => 'Chris']
);
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Disposition-Notification-To' => $rcpt)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Disposition-Notification-To' => $rcpt]),
+ $this->createEncoder(), $this->createCache()
);
- $this->assertEquals(array('chris@swiftmailer.org' => 'Chris'),
+ $this->assertEquals(['chris@swiftmailer.org' => 'Chris'],
$message->getReadReceiptTo()
);
}
public function testReadReceiptIsSetInHeader()
{
- $rcpt = $this->_createHeader('Disposition-Notification-To', array(), array(), false);
+ $rcpt = $this->createHeader('Disposition-Notification-To', [], [], false);
$rcpt->shouldReceive('setFieldBodyModel')
->once()
->with('mark@swiftmailer.org');
- $message = $this->_createMessage(
- $this->_createHeaderSet(array('Disposition-Notification-To' => $rcpt)),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage(
+ $this->createHeaderSet(['Disposition-Notification-To' => $rcpt]),
+ $this->createEncoder(), $this->createCache()
);
$message->setReadReceiptTo('mark@swiftmailer.org');
}
public function testReadReceiptHeaderIsAddedIfNoneSet()
{
- $headers = $this->_createHeaderSet(array(), false);
+ $headers = $this->createHeaderSet([], false);
$headers->shouldReceive('addMailboxHeader')
->once()
->with('Disposition-Notification-To', 'mark@swiftmailer.org');
$headers->shouldReceive('addMailboxHeader')
->zeroOrMoreTimes();
- $message = $this->_createMessage($headers, $this->_createEncoder(),
- $this->_createCache()
+ $message = $this->createMessage($headers, $this->createEncoder(),
+ $this->createCache()
);
$message->setReadReceiptTo('mark@swiftmailer.org');
}
public function testChildrenCanBeAttached()
{
- $child1 = $this->_createChild();
- $child2 = $this->_createChild();
+ $child1 = $this->createChild();
+ $child2 = $this->createChild();
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$message->attach($child1);
$message->attach($child2);
- $this->assertEquals(array($child1, $child2), $message->getChildren());
+ $this->assertEquals([$child1, $child2], $message->getChildren());
}
public function testChildrenCanBeDetached()
{
- $child1 = $this->_createChild();
- $child2 = $this->_createChild();
+ $child1 = $this->createChild();
+ $child2 = $this->createChild();
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$message->attach($child1);
@@ -742,33 +750,33 @@ public function testChildrenCanBeDetached()
$message->detach($child1);
- $this->assertEquals(array($child2), $message->getChildren());
+ $this->assertEquals([$child2], $message->getChildren());
}
public function testEmbedAttachesChild()
{
- $child = $this->_createChild();
+ $child = $this->createChild();
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$message->embed($child);
- $this->assertEquals(array($child), $message->getChildren());
+ $this->assertEquals([$child], $message->getChildren());
}
public function testEmbedReturnsValidCid()
{
- $child = $this->_createChild(Swift_Mime_MimeEntity::LEVEL_RELATED, '',
+ $child = $this->createChild(Swift_Mime_SimpleMimeEntity::LEVEL_RELATED, '',
false
);
$child->shouldReceive('getId')
->zeroOrMoreTimes()
->andReturn('foo@bar');
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertEquals('cid:foo@bar', $message->embed($child));
@@ -776,32 +784,32 @@ public function testEmbedReturnsValidCid()
public function testFluidInterface()
{
- $child = $this->_createChild();
- $message = $this->_createMessage($this->_createHeaderSet(),
- $this->_createEncoder(), $this->_createCache()
+ $child = $this->createChild();
+ $message = $this->createMessage($this->createHeaderSet(),
+ $this->createEncoder(), $this->createCache()
);
$this->assertSame($message,
$message
->setContentType('text/plain')
- ->setEncoder($this->_createEncoder())
+ ->setEncoder($this->createEncoder())
->setId('foo@bar')
->setDescription('my description')
->setMaxLineLength(998)
->setBody('xx')
->setBoundary('xyz')
- ->setChildren(array())
+ ->setChildren([])
->setCharset('iso-8859-1')
->setFormat('flowed')
->setDelSp(false)
->setSubject('subj')
- ->setDate(123)
+ ->setDate(new DateTimeImmutable())
->setReturnPath('foo@bar')
->setSender('foo@bar')
- ->setFrom(array('x@y' => 'XY'))
- ->setReplyTo(array('ab@cd' => 'ABCD'))
- ->setTo(array('chris@site.tld', 'mark@site.tld'))
+ ->setFrom(['x@y' => 'XY'])
+ ->setReplyTo(['ab@cd' => 'ABCD'])
+ ->setTo(['chris@site.tld', 'mark@site.tld'])
->setCc('john@somewhere.tld')
- ->setBcc(array('one@site', 'two@site' => 'Two'))
+ ->setBcc(['one@site', 'two@site' => 'Two'])
->setPriority($message::PRIORITY_LOW)
->setReadReceiptTo('a@b')
->attach($child)
@@ -810,18 +818,20 @@ public function testFluidInterface()
}
//abstract
- protected function _createEntity($headers, $encoder, $cache)
+ protected function createEntity($headers, $encoder, $cache)
{
- return $this->_createMessage($headers, $encoder, $cache);
+ return $this->createMessage($headers, $encoder, $cache);
}
- protected function _createMimePart($headers, $encoder, $cache)
+ protected function createMimePart($headers, $encoder, $cache)
{
- return $this->_createMessage($headers, $encoder, $cache);
+ return $this->createMessage($headers, $encoder, $cache);
}
- private function _createMessage($headers, $encoder, $cache)
+ private function createMessage($headers, $encoder, $cache)
{
- return new Swift_Mime_SimpleMessage($headers, $encoder, $cache, new Swift_Mime_Grammar());
+ $idGenerator = new Swift_Mime_IdGenerator('example.com');
+
+ return new Swift_Mime_SimpleMessage($headers, $encoder, $cache, $idGenerator);
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMimeEntityTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMimeEntityTest.php
index fa2a8d4..24578ed 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMimeEntityTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/SimpleMimeEntityTest.php
@@ -1,9 +1,12 @@
_createTransport();
+ $transport = $this->createTransport();
$transport->expects($this->once())
->method('start');
$transport->expects($this->once())
->method('stop');
- $evt = $this->_createSendEvent($transport);
+ $evt = $this->createSendEvent($transport);
$plugin = new Swift_Plugins_AntiFloodPlugin(10);
for ($i = 0; $i < 12; ++$i) {
@@ -36,13 +36,13 @@ public function testPluginStopsConnectionAfterThreshold()
public function testPluginCanStopAndStartMultipleTimes()
{
- $transport = $this->_createTransport();
+ $transport = $this->createTransport();
$transport->expects($this->exactly(5))
->method('start');
$transport->expects($this->exactly(5))
->method('stop');
- $evt = $this->_createSendEvent($transport);
+ $evt = $this->createSendEvent($transport);
$plugin = new Swift_Plugins_AntiFloodPlugin(2);
for ($i = 0; $i < 11; ++$i) {
@@ -57,13 +57,13 @@ public function testPluginCanSleepDuringRestart()
->method('sleep')
->with(10);
- $transport = $this->_createTransport();
+ $transport = $this->createTransport();
$transport->expects($this->once())
->method('start');
$transport->expects($this->once())
->method('stop');
- $evt = $this->_createSendEvent($transport);
+ $evt = $this->createSendEvent($transport);
$plugin = new Swift_Plugins_AntiFloodPlugin(99, 10, $sleeper);
for ($i = 0; $i < 101; ++$i) {
@@ -71,12 +71,12 @@ public function testPluginCanSleepDuringRestart()
}
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
- private function _createSendEvent($transport)
+ private function createSendEvent($transport)
{
$evt = $this->getMockBuilder('Swift_Events_SendEvent')
->disableOriginalConstructor()
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/BandwidthMonitorPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/BandwidthMonitorPluginTest.php
index 869cfc8..cbacfe2 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/BandwidthMonitorPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/BandwidthMonitorPluginTest.php
@@ -1,6 +1,6 @@
_monitor = new Swift_Plugins_BandwidthMonitorPlugin();
+ $this->monitor = new Swift_Plugins_BandwidthMonitorPlugin();
}
public function testBytesOutIncreasesWhenCommandsSent()
{
- $evt = $this->_createCommandEvent("RCPT TO:\r\n");
+ $evt = $this->createCommandEvent("RCPT TO:\r\n");
- $this->assertEquals(0, $this->_monitor->getBytesOut());
- $this->_monitor->commandSent($evt);
- $this->assertEquals(23, $this->_monitor->getBytesOut());
- $this->_monitor->commandSent($evt);
- $this->assertEquals(46, $this->_monitor->getBytesOut());
+ $this->assertEquals(0, $this->monitor->getBytesOut());
+ $this->monitor->commandSent($evt);
+ $this->assertEquals(23, $this->monitor->getBytesOut());
+ $this->monitor->commandSent($evt);
+ $this->assertEquals(46, $this->monitor->getBytesOut());
}
public function testBytesInIncreasesWhenResponsesReceived()
{
- $evt = $this->_createResponseEvent("250 Ok\r\n");
+ $evt = $this->createResponseEvent("250 Ok\r\n");
- $this->assertEquals(0, $this->_monitor->getBytesIn());
- $this->_monitor->responseReceived($evt);
- $this->assertEquals(8, $this->_monitor->getBytesIn());
- $this->_monitor->responseReceived($evt);
- $this->assertEquals(16, $this->_monitor->getBytesIn());
+ $this->assertEquals(0, $this->monitor->getBytesIn());
+ $this->monitor->responseReceived($evt);
+ $this->assertEquals(8, $this->monitor->getBytesIn());
+ $this->monitor->responseReceived($evt);
+ $this->assertEquals(16, $this->monitor->getBytesIn());
}
public function testCountersCanBeReset()
{
- $evt = $this->_createResponseEvent("250 Ok\r\n");
+ $evt = $this->createResponseEvent("250 Ok\r\n");
- $this->assertEquals(0, $this->_monitor->getBytesIn());
- $this->_monitor->responseReceived($evt);
- $this->assertEquals(8, $this->_monitor->getBytesIn());
- $this->_monitor->responseReceived($evt);
- $this->assertEquals(16, $this->_monitor->getBytesIn());
+ $this->assertEquals(0, $this->monitor->getBytesIn());
+ $this->monitor->responseReceived($evt);
+ $this->assertEquals(8, $this->monitor->getBytesIn());
+ $this->monitor->responseReceived($evt);
+ $this->assertEquals(16, $this->monitor->getBytesIn());
- $evt = $this->_createCommandEvent("RCPT TO:\r\n");
+ $evt = $this->createCommandEvent("RCPT TO:\r\n");
- $this->assertEquals(0, $this->_monitor->getBytesOut());
- $this->_monitor->commandSent($evt);
- $this->assertEquals(23, $this->_monitor->getBytesOut());
- $this->_monitor->commandSent($evt);
- $this->assertEquals(46, $this->_monitor->getBytesOut());
+ $this->assertEquals(0, $this->monitor->getBytesOut());
+ $this->monitor->commandSent($evt);
+ $this->assertEquals(23, $this->monitor->getBytesOut());
+ $this->monitor->commandSent($evt);
+ $this->assertEquals(46, $this->monitor->getBytesOut());
- $this->_monitor->reset();
+ $this->monitor->reset();
- $this->assertEquals(0, $this->_monitor->getBytesOut());
- $this->assertEquals(0, $this->_monitor->getBytesIn());
+ $this->assertEquals(0, $this->monitor->getBytesOut());
+ $this->assertEquals(0, $this->monitor->getBytesIn());
}
public function testBytesOutIncreasesAccordingToMessageLength()
{
- $message = $this->_createMessageWithByteCount(6);
- $evt = $this->_createSendEvent($message);
-
- $this->assertEquals(0, $this->_monitor->getBytesOut());
- $this->_monitor->sendPerformed($evt);
- $this->assertEquals(6, $this->_monitor->getBytesOut());
- $this->_monitor->sendPerformed($evt);
- $this->assertEquals(12, $this->_monitor->getBytesOut());
+ $message = $this->createMessageWithByteCount(6);
+ $evt = $this->createSendEvent($message);
+
+ $this->assertEquals(0, $this->monitor->getBytesOut());
+ $this->monitor->sendPerformed($evt);
+ $this->assertEquals(6, $this->monitor->getBytesOut());
+ $this->monitor->sendPerformed($evt);
+ $this->assertEquals(12, $this->monitor->getBytesOut());
}
- private function _createSendEvent($message)
+ private function createSendEvent($message)
{
$evt = $this->getMockBuilder('Swift_Events_SendEvent')
->disableOriginalConstructor()
@@ -81,7 +81,7 @@ private function _createSendEvent($message)
return $evt;
}
- private function _createCommandEvent($command)
+ private function createCommandEvent($command)
{
$evt = $this->getMockBuilder('Swift_Events_CommandEvent')
->disableOriginalConstructor()
@@ -93,7 +93,7 @@ private function _createCommandEvent($command)
return $evt;
}
- private function _createResponseEvent($response)
+ private function createResponseEvent($response)
{
$evt = $this->getMockBuilder('Swift_Events_ResponseEvent')
->disableOriginalConstructor()
@@ -105,23 +105,23 @@ private function _createResponseEvent($response)
return $evt;
}
- private function _createMessageWithByteCount($bytes)
+ private function createMessageWithByteCount($bytes)
{
- $this->_bytes = $bytes;
- $msg = $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ $this->bytes = $bytes;
+ $msg = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
$msg->expects($this->any())
->method('toByteStream')
- ->will($this->returnCallback(array($this, '_write')));
- /* $this->_checking(Expectations::create()
- -> ignoring($msg)->toByteStream(any()) -> calls(array($this, '_write'))
- ); */
+ ->will($this->returnCallback([$this, 'write']));
+ /* $this->checking(Expectations::create()
+ -> ignoring($msg)->toByteStream(any()) -> calls(array($this, 'write'))
+ ); */
return $msg;
}
- public function _write($is)
+ public function write($is)
{
- for ($i = 0; $i < $this->_bytes; ++$i) {
+ for ($i = 0; $i < $this->bytes; ++$i) {
$is->write('x');
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/DecoratorPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/DecoratorPluginTest.php
index 8019dfb..97b1d95 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/DecoratorPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/DecoratorPluginTest.php
@@ -4,10 +4,10 @@ class Swift_Plugins_DecoratorPluginTest extends \SwiftMailerTestCase
{
public function testMessageBodyReceivesReplacements()
{
- $message = $this->_createMessage(
- $this->_createHeaders(),
- array('zip@button.tld' => 'Zipathon'),
- array('chris.corbyn@swiftmailer.org' => 'Chris'),
+ $message = $this->createMessage(
+ $this->createHeaders(),
+ ['zip@button.tld' => 'Zipathon'],
+ ['chris.corbyn@swiftmailer.org' => 'Chris'],
'Subject',
'Hello {name}, you are customer #{id}'
);
@@ -17,11 +17,11 @@ public function testMessageBodyReceivesReplacements()
$message->shouldReceive('setBody')
->zeroOrMoreTimes();
- $plugin = $this->_createPlugin(
- array('zip@button.tld' => array('{name}' => 'Zip', '{id}' => '456'))
+ $plugin = $this->createPlugin(
+ ['zip@button.tld' => ['{name}' => 'Zip', '{id}' => '456']]
);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$plugin->sendPerformed($evt);
@@ -29,10 +29,10 @@ public function testMessageBodyReceivesReplacements()
public function testReplacementsCanBeAppliedToSameMessageMultipleTimes()
{
- $message = $this->_createMessage(
- $this->_createHeaders(),
- array('zip@button.tld' => 'Zipathon', 'foo@bar.tld' => 'Foo'),
- array('chris.corbyn@swiftmailer.org' => 'Chris'),
+ $message = $this->createMessage(
+ $this->createHeaders(),
+ ['zip@button.tld' => 'Zipathon', 'foo@bar.tld' => 'Foo'],
+ ['chris.corbyn@swiftmailer.org' => 'Chris'],
'Subject',
'Hello {name}, you are customer #{id}'
);
@@ -48,14 +48,14 @@ public function testReplacementsCanBeAppliedToSameMessageMultipleTimes()
$message->shouldReceive('setBody')
->zeroOrMoreTimes();
- $plugin = $this->_createPlugin(
- array(
- 'foo@bar.tld' => array('{name}' => 'Foo', '{id}' => '123'),
- 'zip@button.tld' => array('{name}' => 'Zip', '{id}' => '456'),
- )
+ $plugin = $this->createPlugin(
+ [
+ 'foo@bar.tld' => ['{name}' => 'Foo', '{id}' => '123'],
+ 'zip@button.tld' => ['{name}' => 'Zip', '{id}' => '456'],
+ ]
);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$plugin->sendPerformed($evt);
@@ -65,15 +65,15 @@ public function testReplacementsCanBeAppliedToSameMessageMultipleTimes()
public function testReplacementsCanBeMadeInHeaders()
{
- $headers = $this->_createHeaders(array(
- $returnPathHeader = $this->_createHeader('Return-Path', 'foo-{id}@swiftmailer.org'),
- $toHeader = $this->_createHeader('Subject', 'A message for {name}!'),
- ));
+ $headers = $this->createHeaders([
+ $returnPathHeader = $this->createHeader('Return-Path', 'foo-{id}@swiftmailer.org'),
+ $toHeader = $this->createHeader('Subject', 'A message for {name}!'),
+ ]);
- $message = $this->_createMessage(
+ $message = $this->createMessage(
$headers,
- array('zip@button.tld' => 'Zipathon'),
- array('chris.corbyn@swiftmailer.org' => 'Chris'),
+ ['zip@button.tld' => 'Zipathon'],
+ ['chris.corbyn@swiftmailer.org' => 'Chris'],
'A message for {name}!',
'Hello {name}, you are customer #{id}'
);
@@ -94,10 +94,10 @@ public function testReplacementsCanBeMadeInHeaders()
$returnPathHeader->shouldReceive('setFieldBodyModel')
->zeroOrMoreTimes();
- $plugin = $this->_createPlugin(
- array('zip@button.tld' => array('{name}' => 'Zip', '{id}' => '456'))
+ $plugin = $this->createPlugin(
+ ['zip@button.tld' => ['{name}' => 'Zip', '{id}' => '456']]
);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$plugin->sendPerformed($evt);
@@ -105,18 +105,18 @@ public function testReplacementsCanBeMadeInHeaders()
public function testReplacementsAreMadeOnSubparts()
{
- $part1 = $this->_createPart('text/plain', 'Your name is {name}?', '1@x');
- $part2 = $this->_createPart('text/html', 'Your name is {name}?', '2@x');
- $message = $this->_createMessage(
- $this->_createHeaders(),
- array('zip@button.tld' => 'Zipathon'),
- array('chris.corbyn@swiftmailer.org' => 'Chris'),
+ $part1 = $this->createPart('text/plain', 'Your name is {name}?', '1@x');
+ $part2 = $this->createPart('text/html', 'Your name is {name}?', '2@x');
+ $message = $this->createMessage(
+ $this->createHeaders(),
+ ['zip@button.tld' => 'Zipathon'],
+ ['chris.corbyn@swiftmailer.org' => 'Chris'],
'A message for {name}!',
'Subject'
);
$message->shouldReceive('getChildren')
->zeroOrMoreTimes()
- ->andReturn(array($part1, $part2));
+ ->andReturn([$part1, $part2]);
$part1->shouldReceive('setBody')
->once()
->with('Your name is Zip?');
@@ -128,11 +128,11 @@ public function testReplacementsAreMadeOnSubparts()
$part2->shouldReceive('setBody')
->zeroOrMoreTimes();
- $plugin = $this->_createPlugin(
- array('zip@button.tld' => array('{name}' => 'Zip', '{id}' => '456'))
+ $plugin = $this->createPlugin(
+ ['zip@button.tld' => ['{name}' => 'Zip', '{id}' => '456']]
);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$plugin->sendPerformed($evt);
@@ -140,15 +140,15 @@ public function testReplacementsAreMadeOnSubparts()
public function testReplacementsCanBeTakenFromCustomReplacementsObject()
{
- $message = $this->_createMessage(
- $this->_createHeaders(),
- array('foo@bar' => 'Foobar', 'zip@zap' => 'Zip zap'),
- array('chris.corbyn@swiftmailer.org' => 'Chris'),
+ $message = $this->createMessage(
+ $this->createHeaders(),
+ ['foo@bar' => 'Foobar', 'zip@zap' => 'Zip zap'],
+ ['chris.corbyn@swiftmailer.org' => 'Chris'],
'Subject',
'Something {a}'
);
- $replacements = $this->_createReplacements();
+ $replacements = $this->createReplacements();
$message->shouldReceive('setBody')
->once()
@@ -161,15 +161,15 @@ public function testReplacementsCanBeTakenFromCustomReplacementsObject()
$replacements->shouldReceive('getReplacementsFor')
->once()
->with('foo@bar')
- ->andReturn(array('{a}' => 'b'));
+ ->andReturn(['{a}' => 'b']);
$replacements->shouldReceive('getReplacementsFor')
->once()
->with('zip@zap')
- ->andReturn(array('{a}' => 'c'));
+ ->andReturn(['{a}' => 'c']);
- $plugin = $this->_createPlugin($replacements);
+ $plugin = $this->createPlugin($replacements);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$plugin->sendPerformed($evt);
@@ -177,14 +177,31 @@ public function testReplacementsCanBeTakenFromCustomReplacementsObject()
$plugin->sendPerformed($evt);
}
- private function _createMessage($headers, $to = array(), $from = null, $subject = null,
+ public function testReplacementsWithAMessageWithImmutableDate()
+ {
+ $message = (new Swift_Message('subject foo'))
+ ->setBody('body foo')
+ ->addTo('somebody@hostname.tld')
+ ->addFrom('somebody@hostname.tld');
+
+ $evt = $this->createSendEvent($message);
+
+ $plugin = $this->createPlugin(['somebody@hostname.tld' => ['foo' => 'bar']]);
+
+ $plugin->beforeSendPerformed($evt);
+
+ $this->assertEquals('subject bar', $message->getSubject());
+ $this->assertEquals('body bar', $message->getBody());
+ }
+
+ private function createMessage($headers, $to = [], $from = null, $subject = null,
$body = null)
{
- $message = $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
+ $message = $this->getMockery('Swift_Mime_SimpleMessage')->shouldIgnoreMissing();
foreach ($to as $addr => $name) {
$message->shouldReceive('getTo')
->once()
- ->andReturn(array($addr => $name));
+ ->andReturn([$addr => $name]);
}
$message->shouldReceive('getHeaders')
->zeroOrMoreTimes()
@@ -202,17 +219,17 @@ private function _createMessage($headers, $to = array(), $from = null, $subject
return $message;
}
- private function _createPlugin($replacements)
+ private function createPlugin($replacements)
{
return new Swift_Plugins_DecoratorPlugin($replacements);
}
- private function _createReplacements()
+ private function createReplacements()
{
return $this->getMockery('Swift_Plugins_Decorator_Replacements')->shouldIgnoreMissing();
}
- private function _createSendEvent(Swift_Mime_Message $message)
+ private function createSendEvent(Swift_Mime_SimpleMessage $message)
{
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
$evt->shouldReceive('getMessage')
@@ -222,9 +239,9 @@ private function _createSendEvent(Swift_Mime_Message $message)
return $evt;
}
- private function _createPart($type, $body, $id)
+ private function createPart($type, $body, $id)
{
- $part = $this->getMockery('Swift_Mime_MimeEntity')->shouldIgnoreMissing();
+ $part = $this->getMockery('Swift_Mime_SimpleMimeEntity')->shouldIgnoreMissing();
$part->shouldReceive('getContentType')
->zeroOrMoreTimes()
->andReturn($type);
@@ -238,9 +255,9 @@ private function _createPart($type, $body, $id)
return $part;
}
- private function _createHeaders($headers = array())
+ private function createHeaders($headers = [])
{
- $set = $this->getMockery('Swift_Mime_HeaderSet')->shouldIgnoreMissing();
+ $set = $this->getMockery('Swift_Mime_SimpleHeaderSet')->shouldIgnoreMissing();
$set->shouldReceive('getAll')
->zeroOrMoreTimes()
->andReturn($headers);
@@ -252,7 +269,7 @@ private function _createHeaders($headers = array())
return $set;
}
- private function _createHeader($name, $body = '')
+ private function createHeader($name, $body = '')
{
$header = $this->getMockery('Swift_Mime_Header')->shouldIgnoreMissing();
$header->shouldReceive('getFieldName')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/LoggerPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/LoggerPluginTest.php
index bfe4cb7..d66021c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/LoggerPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/LoggerPluginTest.php
@@ -4,118 +4,118 @@ class Swift_Plugins_LoggerPluginTest extends \SwiftMailerTestCase
{
public function testLoggerDelegatesAddingEntries()
{
- $logger = $this->_createLogger();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with('foo');
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->add('foo');
}
public function testLoggerDelegatesDumpingEntries()
{
- $logger = $this->_createLogger();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('dump')
->will($this->returnValue('foobar'));
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$this->assertEquals('foobar', $plugin->dump());
}
public function testLoggerDelegatesClearingEntries()
{
- $logger = $this->_createLogger();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('clear');
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->clear();
}
public function testCommandIsSentToLogger()
{
- $evt = $this->_createCommandEvent("foo\r\n");
- $logger = $this->_createLogger();
+ $evt = $this->createCommandEvent("foo\r\n");
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
- ->with($this->regExp('~foo\r\n~'));
+ ->with(static::regExp('~foo\r\n~'));
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->commandSent($evt);
}
public function testResponseIsSentToLogger()
{
- $evt = $this->_createResponseEvent("354 Go ahead\r\n");
- $logger = $this->_createLogger();
+ $evt = $this->createResponseEvent("354 Go ahead\r\n");
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
- ->with($this->regExp('~354 Go ahead\r\n~'));
+ ->with(static::regExp('~354 Go ahead\r\n~'));
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->responseReceived($evt);
}
public function testTransportBeforeStartChangeIsSentToLogger()
{
- $evt = $this->_createTransportChangeEvent();
- $logger = $this->_createLogger();
+ $evt = $this->createTransportChangeEvent();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with($this->anything());
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->beforeTransportStarted($evt);
}
public function testTransportStartChangeIsSentToLogger()
{
- $evt = $this->_createTransportChangeEvent();
- $logger = $this->_createLogger();
+ $evt = $this->createTransportChangeEvent();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with($this->anything());
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->transportStarted($evt);
}
public function testTransportStopChangeIsSentToLogger()
{
- $evt = $this->_createTransportChangeEvent();
- $logger = $this->_createLogger();
+ $evt = $this->createTransportChangeEvent();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with($this->anything());
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->transportStopped($evt);
}
public function testTransportBeforeStopChangeIsSentToLogger()
{
- $evt = $this->_createTransportChangeEvent();
- $logger = $this->_createLogger();
+ $evt = $this->createTransportChangeEvent();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with($this->anything());
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
$plugin->beforeTransportStopped($evt);
}
public function testExceptionsArePassedToDelegateAndLeftToBubbleUp()
{
- $transport = $this->_createTransport();
- $evt = $this->_createTransportExceptionEvent();
- $logger = $this->_createLogger();
+ $transport = $this->createTransport();
+ $evt = $this->createTransportExceptionEvent();
+ $logger = $this->createLogger();
$logger->expects($this->once())
->method('add')
->with($this->anything());
- $plugin = $this->_createPlugin($logger);
+ $plugin = $this->createPlugin($logger);
try {
$plugin->exceptionThrown($evt);
$this->fail('Exception should bubble up.');
@@ -123,17 +123,17 @@ public function testExceptionsArePassedToDelegateAndLeftToBubbleUp()
}
}
- private function _createLogger()
+ private function createLogger()
{
return $this->getMockBuilder('Swift_Plugins_Logger')->getMock();
}
- private function _createPlugin($logger)
+ private function createPlugin($logger)
{
return new Swift_Plugins_LoggerPlugin($logger);
}
- private function _createCommandEvent($command)
+ private function createCommandEvent($command)
{
$evt = $this->getMockBuilder('Swift_Events_CommandEvent')
->disableOriginalConstructor()
@@ -145,7 +145,7 @@ private function _createCommandEvent($command)
return $evt;
}
- private function _createResponseEvent($response)
+ private function createResponseEvent($response)
{
$evt = $this->getMockBuilder('Swift_Events_ResponseEvent')
->disableOriginalConstructor()
@@ -157,24 +157,24 @@ private function _createResponseEvent($response)
return $evt;
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
- private function _createTransportChangeEvent()
+ private function createTransportChangeEvent()
{
$evt = $this->getMockBuilder('Swift_Events_TransportChangeEvent')
->disableOriginalConstructor()
->getMock();
$evt->expects($this->any())
->method('getSource')
- ->will($this->returnValue($this->_createTransport()));
+ ->will($this->returnValue($this->createTransport()));
return $evt;
}
- public function _createTransportExceptionEvent()
+ public function createTransportExceptionEvent()
{
$evt = $this->getMockBuilder('Swift_Events_TransportExceptionEvent')
->disableOriginalConstructor()
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Loggers/ArrayLoggerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Loggers/ArrayLoggerTest.php
index 880bb32..48c1b07 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Loggers/ArrayLoggerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Loggers/ArrayLoggerTest.php
@@ -1,6 +1,6 @@
_createConnection();
+ $connection = $this->createConnection();
$connection->expects($this->once())
->method('connect');
- $plugin = $this->_createPlugin('pop.host.tld', 110);
+ $plugin = $this->createPlugin('pop.host.tld', 110);
$plugin->setConnection($connection);
- $transport = $this->_createTransport();
- $evt = $this->_createTransportChangeEvent($transport);
+ $transport = $this->createTransport();
+ $evt = $this->createTransportChangeEvent($transport);
$plugin->beforeTransportStarted($evt);
}
public function testPluginDisconnectsFromPop3HostBeforeTransportStarts()
{
- $connection = $this->_createConnection();
+ $connection = $this->createConnection();
$connection->expects($this->once())
->method('disconnect');
- $plugin = $this->_createPlugin('pop.host.tld', 110);
+ $plugin = $this->createPlugin('pop.host.tld', 110);
$plugin->setConnection($connection);
- $transport = $this->_createTransport();
- $evt = $this->_createTransportChangeEvent($transport);
+ $transport = $this->createTransport();
+ $evt = $this->createTransportChangeEvent($transport);
$plugin->beforeTransportStarted($evt);
}
public function testPluginDoesNotConnectToSmtpIfBoundToDifferentTransport()
{
- $connection = $this->_createConnection();
+ $connection = $this->createConnection();
$connection->expects($this->never())
->method('disconnect');
$connection->expects($this->never())
->method('connect');
- $smtp = $this->_createTransport();
+ $smtp = $this->createTransport();
- $plugin = $this->_createPlugin('pop.host.tld', 110);
+ $plugin = $this->createPlugin('pop.host.tld', 110);
$plugin->setConnection($connection);
$plugin->bindSmtp($smtp);
- $transport = $this->_createTransport();
- $evt = $this->_createTransportChangeEvent($transport);
+ $transport = $this->createTransport();
+ $evt = $this->createTransportChangeEvent($transport);
$plugin->beforeTransportStarted($evt);
}
public function testPluginCanBindToSpecificTransport()
{
- $connection = $this->_createConnection();
+ $connection = $this->createConnection();
$connection->expects($this->once())
->method('connect');
- $smtp = $this->_createTransport();
+ $smtp = $this->createTransport();
- $plugin = $this->_createPlugin('pop.host.tld', 110);
+ $plugin = $this->createPlugin('pop.host.tld', 110);
$plugin->setConnection($connection);
$plugin->bindSmtp($smtp);
- $evt = $this->_createTransportChangeEvent($smtp);
+ $evt = $this->createTransportChangeEvent($smtp);
$plugin->beforeTransportStarted($evt);
}
- private function _createTransport()
+ private function createTransport()
{
return $this->getMockBuilder('Swift_Transport')->getMock();
}
- private function _createTransportChangeEvent($transport)
+ private function createTransportChangeEvent($transport)
{
$evt = $this->getMockBuilder('Swift_Events_TransportChangeEvent')
->disableOriginalConstructor()
@@ -89,12 +89,12 @@ private function _createTransportChangeEvent($transport)
return $evt;
}
- public function _createConnection()
+ public function createConnection()
{
return $this->getMockBuilder('Swift_Plugins_Pop_Pop3Connection')->getMock();
}
- public function _createPlugin($host, $port, $crypto = null)
+ public function createPlugin($host, $port, $crypto = null)
{
return new Swift_Plugins_PopBeforeSmtpPlugin($host, $port, $crypto);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
index bfd5669..0ad6386 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
@@ -1,6 +1,6 @@
setSubject('...')
- ->setFrom(array('john@example.com' => 'John Doe'))
- ->setTo($to = array(
+ ->setFrom(['john@example.com' => 'John Doe'])
+ ->setTo($to = [
'fabien-to@example.com' => 'Fabien (To)',
'chris-to@example.com' => 'Chris (To)',
- ))
- ->setCc($cc = array(
+ ])
+ ->setCc($cc = [
'fabien-cc@example.com' => 'Fabien (Cc)',
'chris-cc@example.com' => 'Chris (Cc)',
- ))
- ->setBcc($bcc = array(
+ ])
+ ->setBcc($bcc = [
'fabien-bcc@example.com' => 'Fabien (Bcc)',
'chris-bcc@example.com' => 'Chris (Bcc)',
- ))
+ ])
->setBody('...')
;
$plugin = new Swift_Plugins_RedirectingPlugin('god@example.com');
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
- $this->assertEquals($message->getTo(), array('god@example.com' => ''));
- $this->assertEquals($message->getCc(), array());
- $this->assertEquals($message->getBcc(), array());
+ $this->assertEquals($message->getTo(), ['god@example.com' => '']);
+ $this->assertEquals($message->getCc(), []);
+ $this->assertEquals($message->getBcc(), []);
$plugin->sendPerformed($evt);
@@ -49,75 +49,75 @@ public function testPluginChangesRecipients()
public function testPluginRespectsUnsetToList()
{
- $message = Swift_Message::newInstance()
+ $message = (new Swift_Message())
->setSubject('...')
- ->setFrom(array('john@example.com' => 'John Doe'))
- ->setCc($cc = array(
+ ->setFrom(['john@example.com' => 'John Doe'])
+ ->setCc($cc = [
'fabien-cc@example.com' => 'Fabien (Cc)',
'chris-cc@example.com' => 'Chris (Cc)',
- ))
- ->setBcc($bcc = array(
+ ])
+ ->setBcc($bcc = [
'fabien-bcc@example.com' => 'Fabien (Bcc)',
'chris-bcc@example.com' => 'Chris (Bcc)',
- ))
+ ])
->setBody('...')
;
$plugin = new Swift_Plugins_RedirectingPlugin('god@example.com');
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
- $this->assertEquals($message->getTo(), array('god@example.com' => ''));
- $this->assertEquals($message->getCc(), array());
- $this->assertEquals($message->getBcc(), array());
+ $this->assertEquals($message->getTo(), ['god@example.com' => '']);
+ $this->assertEquals($message->getCc(), []);
+ $this->assertEquals($message->getBcc(), []);
$plugin->sendPerformed($evt);
- $this->assertEquals($message->getTo(), array());
+ $this->assertEquals($message->getTo(), []);
$this->assertEquals($message->getCc(), $cc);
$this->assertEquals($message->getBcc(), $bcc);
}
public function testPluginRespectsAWhitelistOfPatterns()
{
- $message = Swift_Message::newInstance()
+ $message = (new Swift_Message())
->setSubject('...')
- ->setFrom(array('john@example.com' => 'John Doe'))
- ->setTo($to = array(
+ ->setFrom(['john@example.com' => 'John Doe'])
+ ->setTo($to = [
'fabien-to@example.com' => 'Fabien (To)',
'chris-to@example.com' => 'Chris (To)',
'lars-to@internal.com' => 'Lars (To)',
- ))
- ->setCc($cc = array(
+ ])
+ ->setCc($cc = [
'fabien-cc@example.com' => 'Fabien (Cc)',
'chris-cc@example.com' => 'Chris (Cc)',
'lars-cc@internal.org' => 'Lars (Cc)',
- ))
- ->setBcc($bcc = array(
+ ])
+ ->setBcc($bcc = [
'fabien-bcc@example.com' => 'Fabien (Bcc)',
'chris-bcc@example.com' => 'Chris (Bcc)',
'john-bcc@example.org' => 'John (Bcc)',
- ))
+ ])
->setBody('...')
;
$recipient = 'god@example.com';
- $patterns = array('/^.*@internal.[a-z]+$/', '/^john-.*$/');
+ $patterns = ['/^.*@internal.[a-z]+$/', '/^john-.*$/'];
$plugin = new Swift_Plugins_RedirectingPlugin($recipient, $patterns);
$this->assertEquals($recipient, $plugin->getRecipient());
$this->assertEquals($plugin->getWhitelist(), $patterns);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
- $this->assertEquals($message->getTo(), array('lars-to@internal.com' => 'Lars (To)', 'god@example.com' => null));
- $this->assertEquals($message->getCc(), array('lars-cc@internal.org' => 'Lars (Cc)'));
- $this->assertEquals($message->getBcc(), array('john-bcc@example.org' => 'John (Bcc)'));
+ $this->assertEquals($message->getTo(), ['lars-to@internal.com' => 'Lars (To)', 'god@example.com' => null]);
+ $this->assertEquals($message->getCc(), ['lars-cc@internal.org' => 'Lars (Cc)']);
+ $this->assertEquals($message->getBcc(), ['john-bcc@example.org' => 'John (Bcc)']);
$plugin->sendPerformed($evt);
@@ -128,48 +128,48 @@ public function testPluginRespectsAWhitelistOfPatterns()
public function testArrayOfRecipientsCanBeExplicitlyDefined()
{
- $message = Swift_Message::newInstance()
+ $message = (new Swift_Message())
->setSubject('...')
- ->setFrom(array('john@example.com' => 'John Doe'))
- ->setTo(array(
+ ->setFrom(['john@example.com' => 'John Doe'])
+ ->setTo([
'fabien@example.com' => 'Fabien',
'chris@example.com' => 'Chris (To)',
'lars-to@internal.com' => 'Lars (To)',
- ))
- ->setCc(array(
+ ])
+ ->setCc([
'fabien@example.com' => 'Fabien',
'chris-cc@example.com' => 'Chris (Cc)',
'lars-cc@internal.org' => 'Lars (Cc)',
- ))
- ->setBcc(array(
+ ])
+ ->setBcc([
'fabien@example.com' => 'Fabien',
'chris-bcc@example.com' => 'Chris (Bcc)',
'john-bcc@example.org' => 'John (Bcc)',
- ))
+ ])
->setBody('...')
;
- $recipients = array('god@example.com', 'fabien@example.com');
- $patterns = array('/^.*@internal.[a-z]+$/');
+ $recipients = ['god@example.com', 'fabien@example.com'];
+ $patterns = ['/^.*@internal.[a-z]+$/'];
$plugin = new Swift_Plugins_RedirectingPlugin($recipients, $patterns);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$this->assertEquals(
$message->getTo(),
- array('fabien@example.com' => 'Fabien', 'lars-to@internal.com' => 'Lars (To)', 'god@example.com' => null)
+ ['fabien@example.com' => 'Fabien', 'lars-to@internal.com' => 'Lars (To)', 'god@example.com' => null]
);
$this->assertEquals(
$message->getCc(),
- array('fabien@example.com' => 'Fabien', 'lars-cc@internal.org' => 'Lars (Cc)')
+ ['fabien@example.com' => 'Fabien', 'lars-cc@internal.org' => 'Lars (Cc)']
);
- $this->assertEquals($message->getBcc(), array('fabien@example.com' => 'Fabien'));
+ $this->assertEquals($message->getBcc(), ['fabien@example.com' => 'Fabien']);
}
- private function _createSendEvent(Swift_Mime_Message $message)
+ private function createSendEvent(Swift_Mime_SimpleMessage $message)
{
$evt = $this->getMockBuilder('Swift_Events_SendEvent')
->disableOriginalConstructor()
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ReporterPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ReporterPluginTest.php
index 5ba5d5c..19238f8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ReporterPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ReporterPluginTest.php
@@ -4,13 +4,13 @@ class Swift_Plugins_ReporterPluginTest extends \SwiftMailerTestCase
{
public function testReportingPasses()
{
- $message = $this->_createMessage();
- $evt = $this->_createSendEvent();
- $reporter = $this->_createReporter();
+ $message = $this->createMessage();
+ $evt = $this->createSendEvent();
+ $reporter = $this->createReporter();
- $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(array('foo@bar.tld' => 'Foo'));
+ $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(['foo@bar.tld' => 'Foo']);
$evt->shouldReceive('getMessage')->zeroOrMoreTimes()->andReturn($message);
- $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(array());
+ $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn([]);
$reporter->shouldReceive('notify')->once()->with($message, 'foo@bar.tld', Swift_Plugins_Reporter::RESULT_PASS);
$plugin = new Swift_Plugins_ReporterPlugin($reporter);
@@ -19,13 +19,13 @@ public function testReportingPasses()
public function testReportingFailedTo()
{
- $message = $this->_createMessage();
- $evt = $this->_createSendEvent();
- $reporter = $this->_createReporter();
+ $message = $this->createMessage();
+ $evt = $this->createSendEvent();
+ $reporter = $this->createReporter();
- $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(array('foo@bar.tld' => 'Foo', 'zip@button' => 'Zip'));
+ $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(['foo@bar.tld' => 'Foo', 'zip@button' => 'Zip']);
$evt->shouldReceive('getMessage')->zeroOrMoreTimes()->andReturn($message);
- $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(array('zip@button'));
+ $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(['zip@button']);
$reporter->shouldReceive('notify')->once()->with($message, 'foo@bar.tld', Swift_Plugins_Reporter::RESULT_PASS);
$reporter->shouldReceive('notify')->once()->with($message, 'zip@button', Swift_Plugins_Reporter::RESULT_FAIL);
@@ -35,14 +35,14 @@ public function testReportingFailedTo()
public function testReportingFailedCc()
{
- $message = $this->_createMessage();
- $evt = $this->_createSendEvent();
- $reporter = $this->_createReporter();
+ $message = $this->createMessage();
+ $evt = $this->createSendEvent();
+ $reporter = $this->createReporter();
- $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(array('foo@bar.tld' => 'Foo'));
- $message->shouldReceive('getCc')->zeroOrMoreTimes()->andReturn(array('zip@button' => 'Zip', 'test@test.com' => 'Test'));
+ $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(['foo@bar.tld' => 'Foo']);
+ $message->shouldReceive('getCc')->zeroOrMoreTimes()->andReturn(['zip@button' => 'Zip', 'test@test.com' => 'Test']);
$evt->shouldReceive('getMessage')->zeroOrMoreTimes()->andReturn($message);
- $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(array('zip@button'));
+ $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(['zip@button']);
$reporter->shouldReceive('notify')->once()->with($message, 'foo@bar.tld', Swift_Plugins_Reporter::RESULT_PASS);
$reporter->shouldReceive('notify')->once()->with($message, 'zip@button', Swift_Plugins_Reporter::RESULT_FAIL);
$reporter->shouldReceive('notify')->once()->with($message, 'test@test.com', Swift_Plugins_Reporter::RESULT_PASS);
@@ -53,14 +53,14 @@ public function testReportingFailedCc()
public function testReportingFailedBcc()
{
- $message = $this->_createMessage();
- $evt = $this->_createSendEvent();
- $reporter = $this->_createReporter();
+ $message = $this->createMessage();
+ $evt = $this->createSendEvent();
+ $reporter = $this->createReporter();
- $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(array('foo@bar.tld' => 'Foo'));
- $message->shouldReceive('getBcc')->zeroOrMoreTimes()->andReturn(array('zip@button' => 'Zip', 'test@test.com' => 'Test'));
+ $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(['foo@bar.tld' => 'Foo']);
+ $message->shouldReceive('getBcc')->zeroOrMoreTimes()->andReturn(['zip@button' => 'Zip', 'test@test.com' => 'Test']);
$evt->shouldReceive('getMessage')->zeroOrMoreTimes()->andReturn($message);
- $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(array('zip@button'));
+ $evt->shouldReceive('getFailedRecipients')->zeroOrMoreTimes()->andReturn(['zip@button']);
$reporter->shouldReceive('notify')->once()->with($message, 'foo@bar.tld', Swift_Plugins_Reporter::RESULT_PASS);
$reporter->shouldReceive('notify')->once()->with($message, 'zip@button', Swift_Plugins_Reporter::RESULT_FAIL);
$reporter->shouldReceive('notify')->once()->with($message, 'test@test.com', Swift_Plugins_Reporter::RESULT_PASS);
@@ -69,17 +69,17 @@ public function testReportingFailedBcc()
$plugin->sendPerformed($evt);
}
- private function _createMessage()
+ private function createMessage()
{
- return $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
+ return $this->getMockery('Swift_Mime_SimpleMessage')->shouldIgnoreMissing();
}
- private function _createSendEvent()
+ private function createSendEvent()
{
return $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
}
- private function _createReporter()
+ private function createReporter()
{
return $this->getMockery('Swift_Plugins_Reporter')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HitReporterTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HitReporterTest.php
index 20aae57..d5a1c9c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HitReporterTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HitReporterTest.php
@@ -1,64 +1,64 @@
_hitReporter = new Swift_Plugins_Reporters_HitReporter();
- $this->_message = $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ $this->hitReporter = new Swift_Plugins_Reporters_HitReporter();
+ $this->message = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
}
public function testReportingFail()
{
- $this->_hitReporter->notify($this->_message, 'foo@bar.tld',
+ $this->hitReporter->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->assertEquals(array('foo@bar.tld'),
- $this->_hitReporter->getFailedRecipients()
+ $this->assertEquals(['foo@bar.tld'],
+ $this->hitReporter->getFailedRecipients()
);
}
public function testMultipleReports()
{
- $this->_hitReporter->notify($this->_message, 'foo@bar.tld',
+ $this->hitReporter->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->_hitReporter->notify($this->_message, 'zip@button',
+ $this->hitReporter->notify($this->message, 'zip@button',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->assertEquals(array('foo@bar.tld', 'zip@button'),
- $this->_hitReporter->getFailedRecipients()
+ $this->assertEquals(['foo@bar.tld', 'zip@button'],
+ $this->hitReporter->getFailedRecipients()
);
}
public function testReportingPassIsIgnored()
{
- $this->_hitReporter->notify($this->_message, 'foo@bar.tld',
+ $this->hitReporter->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->_hitReporter->notify($this->_message, 'zip@button',
+ $this->hitReporter->notify($this->message, 'zip@button',
Swift_Plugins_Reporter::RESULT_PASS
);
- $this->assertEquals(array('foo@bar.tld'),
- $this->_hitReporter->getFailedRecipients()
+ $this->assertEquals(['foo@bar.tld'],
+ $this->hitReporter->getFailedRecipients()
);
}
public function testBufferCanBeCleared()
{
- $this->_hitReporter->notify($this->_message, 'foo@bar.tld',
+ $this->hitReporter->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->_hitReporter->notify($this->_message, 'zip@button',
+ $this->hitReporter->notify($this->message, 'zip@button',
Swift_Plugins_Reporter::RESULT_FAIL
);
- $this->assertEquals(array('foo@bar.tld', 'zip@button'),
- $this->_hitReporter->getFailedRecipients()
+ $this->assertEquals(['foo@bar.tld', 'zip@button'],
+ $this->hitReporter->getFailedRecipients()
);
- $this->_hitReporter->clear();
- $this->assertEquals(array(), $this->_hitReporter->getFailedRecipients());
+ $this->hitReporter->clear();
+ $this->assertEquals([], $this->hitReporter->getFailedRecipients());
}
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HtmlReporterTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HtmlReporterTest.php
index fb0bc97..6b86cfe 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HtmlReporterTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/Reporters/HtmlReporterTest.php
@@ -1,20 +1,20 @@
_html = new Swift_Plugins_Reporters_HtmlReporter();
- $this->_message = $this->getMockBuilder('Swift_Mime_Message')->getMock();
+ $this->html = new Swift_Plugins_Reporters_HtmlReporter();
+ $this->message = $this->getMockBuilder('Swift_Mime_SimpleMessage')->disableOriginalConstructor()->getMock();
}
public function testReportingPass()
{
ob_start();
- $this->_html->notify($this->_message, 'foo@bar.tld',
+ $this->html->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_PASS
);
$html = ob_get_clean();
@@ -26,7 +26,7 @@ public function testReportingPass()
public function testReportingFail()
{
ob_start();
- $this->_html->notify($this->_message, 'zip@button',
+ $this->html->notify($this->message, 'zip@button',
Swift_Plugins_Reporter::RESULT_FAIL
);
$html = ob_get_clean();
@@ -38,10 +38,10 @@ public function testReportingFail()
public function testMultipleReports()
{
ob_start();
- $this->_html->notify($this->_message, 'foo@bar.tld',
+ $this->html->notify($this->message, 'foo@bar.tld',
Swift_Plugins_Reporter::RESULT_PASS
);
- $this->_html->notify($this->_message, 'zip@button',
+ $this->html->notify($this->message, 'zip@button',
Swift_Plugins_Reporter::RESULT_FAIL
);
$html = ob_get_clean();
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ThrottlerPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ThrottlerPluginTest.php
index 309f506..e35dcc8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ThrottlerPluginTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/ThrottlerPluginTest.php
@@ -4,8 +4,8 @@ class Swift_Plugins_ThrottlerPluginTest extends \SwiftMailerTestCase
{
public function testBytesPerMinuteThrottling()
{
- $sleeper = $this->_createSleeper();
- $timer = $this->_createTimer();
+ $sleeper = $this->createSleeper();
+ $timer = $this->createTimer();
//10MB/min
$plugin = new Swift_Plugins_ThrottlerPlugin(
@@ -25,9 +25,9 @@ public function testBytesPerMinuteThrottling()
// .: (10,000,000/100,000)/60 emails per second = 1.667 emais/sec
- $message = $this->_createMessageWithByteCount(100000); //100KB
+ $message = $this->createMessageWithByteCount(100000); //100KB
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
for ($i = 0; $i < 5; ++$i) {
$plugin->beforeSendPerformed($evt);
@@ -37,8 +37,8 @@ public function testBytesPerMinuteThrottling()
public function testMessagesPerMinuteThrottling()
{
- $sleeper = $this->_createSleeper();
- $timer = $this->_createTimer();
+ $sleeper = $this->createSleeper();
+ $timer = $this->createTimer();
//60/min
$plugin = new Swift_Plugins_ThrottlerPlugin(
@@ -56,9 +56,9 @@ public function testMessagesPerMinuteThrottling()
//60 messages per minute
//1 message per second
- $message = $this->_createMessageWithByteCount(10);
+ $message = $this->createMessageWithByteCount(10);
- $evt = $this->_createSendEvent($message);
+ $evt = $this->createSendEvent($message);
for ($i = 0; $i < 5; ++$i) {
$plugin->beforeSendPerformed($evt);
@@ -66,19 +66,19 @@ public function testMessagesPerMinuteThrottling()
}
}
- private function _createSleeper()
+ private function createSleeper()
{
return $this->getMockery('Swift_Plugins_Sleeper');
}
- private function _createTimer()
+ private function createTimer()
{
return $this->getMockery('Swift_Plugins_Timer');
}
- private function _createMessageWithByteCount($bytes)
+ private function createMessageWithByteCount($bytes)
{
- $msg = $this->getMockery('Swift_Mime_Message');
+ $msg = $this->getMockery('Swift_Mime_SimpleMessage');
$msg->shouldReceive('toByteStream')
->zeroOrMoreTimes()
->andReturnUsing(function ($is) use ($bytes) {
@@ -90,7 +90,7 @@ private function _createMessageWithByteCount($bytes)
return $msg;
}
- private function _createSendEvent($message)
+ private function createSendEvent($message)
{
$evt = $this->getMockery('Swift_Events_SendEvent');
$evt->shouldReceive('getMessage')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/DKIMSignerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/DKIMSignerTest.php
index 5eda223..bcc41cf 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/DKIMSignerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/DKIMSignerTest.php
@@ -1,17 +1,12 @@
markTestSkipped('skipping because of https://bugs.php.net/bug.php?id=61421');
- }
- }
-
public function testBasicSigningHeaderManipulation()
{
- $headers = $this->_createHeaders();
+ $headers = $this->createHeaders();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
/* @var $signer Swift_Signers_HeaderSigner */
@@ -30,13 +25,13 @@ public function testBasicSigningHeaderManipulation()
// SHA1 Signing
public function testSigningSHA1()
{
- $headerSet = $this->_createHeaderSet();
+ $headerSet = $this->createHeaderSet();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
$signer->setHashAlgorithm('rsa-sha1');
$signer->setSignatureTimestamp('1299879181');
$altered = $signer->getAlteredHeaders();
- $this->assertEquals(array('DKIM-Signature'), $altered);
+ $this->assertEquals(['DKIM-Signature'], $altered);
$signer->reset();
$signer->setHeaders($headerSet);
$this->assertFalse($headerSet->has('DKIM-Signature'));
@@ -53,13 +48,13 @@ public function testSigningSHA1()
// SHA256 Signing
public function testSigning256()
{
- $headerSet = $this->_createHeaderSet();
+ $headerSet = $this->createHeaderSet();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
$signer->setHashAlgorithm('rsa-sha256');
$signer->setSignatureTimestamp('1299879181');
$altered = $signer->getAlteredHeaders();
- $this->assertEquals(array('DKIM-Signature'), $altered);
+ $this->assertEquals(['DKIM-Signature'], $altered);
$signer->reset();
$signer->setHeaders($headerSet);
$this->assertFalse($headerSet->has('DKIM-Signature'));
@@ -76,7 +71,7 @@ public function testSigning256()
// Relaxed/Relaxed Hash Signing
public function testSigningRelaxedRelaxed256()
{
- $headerSet = $this->_createHeaderSet();
+ $headerSet = $this->createHeaderSet();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
$signer->setHashAlgorithm('rsa-sha256');
@@ -84,7 +79,7 @@ public function testSigningRelaxedRelaxed256()
$signer->setBodyCanon('relaxed');
$signer->setHeaderCanon('relaxed');
$altered = $signer->getAlteredHeaders();
- $this->assertEquals(array('DKIM-Signature'), $altered);
+ $this->assertEquals(['DKIM-Signature'], $altered);
$signer->reset();
$signer->setHeaders($headerSet);
$this->assertFalse($headerSet->has('DKIM-Signature'));
@@ -101,14 +96,14 @@ public function testSigningRelaxedRelaxed256()
// Relaxed/Simple Hash Signing
public function testSigningRelaxedSimple256()
{
- $headerSet = $this->_createHeaderSet();
+ $headerSet = $this->createHeaderSet();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
$signer->setHashAlgorithm('rsa-sha256');
$signer->setSignatureTimestamp('1299879181');
$signer->setHeaderCanon('relaxed');
$altered = $signer->getAlteredHeaders();
- $this->assertEquals(array('DKIM-Signature'), $altered);
+ $this->assertEquals(['DKIM-Signature'], $altered);
$signer->reset();
$signer->setHeaders($headerSet);
$this->assertFalse($headerSet->has('DKIM-Signature'));
@@ -125,14 +120,14 @@ public function testSigningRelaxedSimple256()
// Simple/Relaxed Hash Signing
public function testSigningSimpleRelaxed256()
{
- $headerSet = $this->_createHeaderSet();
+ $headerSet = $this->createHeaderSet();
$messageContent = 'Hello World';
$signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))).'/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector');
$signer->setHashAlgorithm('rsa-sha256');
$signer->setSignatureTimestamp('1299879181');
$signer->setBodyCanon('relaxed');
$altered = $signer->getAlteredHeaders();
- $this->assertEquals(array('DKIM-Signature'), $altered);
+ $this->assertEquals(['DKIM-Signature'], $altered);
$signer->reset();
$signer->setHeaders($headerSet);
$this->assertFalse($headerSet->has('DKIM-Signature'));
@@ -146,16 +141,16 @@ public function testSigningSimpleRelaxed256()
$this->assertEquals($sig->getValue(), 'v=1; a=rsa-sha256; bh=f+W+hu8dIhf2VAni89o8lF6WKTXi7nViA4RrMdpD5/U=; d=dummy.nxdomain.be; h=; i=@dummy.nxdomain.be; s=dummySelector; c=simple/relaxed; t=1299879181; b=M5eomH/zamyzix9kOes+6YLzQZxuJdBP4x3nP9zF2N26eMLG2/cBKbnNyqiOTDhJdYfWPbLIa 1CWnjST0j5p4CpeOkGYuiE+M4TWEZwhRmRWootlPO3Ii6XpbBJKFk1o9zviS7OmXblUUE4aqb yRSIMDhtLdCK5GlaCneFLN7RQ=');
}
- private function _createHeaderSet()
+ private function createHeaderSet()
{
$cache = new Swift_KeyCache_ArrayKeyCache(new Swift_KeyCache_SimpleKeyCacheInputStream());
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
$contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
- $headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'));
- $paramEncoder = new Swift_Encoder_Rfc2231Encoder(new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'));
- $grammar = new Swift_Mime_Grammar();
- $headers = new Swift_Mime_SimpleHeaderSet(new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $grammar));
+ $headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(new Swift_CharacterStream_CharacterStream($factory, 'utf-8'));
+ $paramEncoder = new Swift_Encoder_Rfc2231Encoder(new Swift_CharacterStream_CharacterStream($factory, 'utf-8'));
+ $emailValidator = new EmailValidator();
+ $headers = new Swift_Mime_SimpleHeaderSet(new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $emailValidator));
return $headers;
}
@@ -163,22 +158,22 @@ private function _createHeaderSet()
/**
* @return Swift_Mime_Headers
*/
- private function _createHeaders()
+ private function createHeaders()
{
$x = 0;
$cache = new Swift_KeyCache_ArrayKeyCache(new Swift_KeyCache_SimpleKeyCacheInputStream());
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
$contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
- $headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'));
- $paramEncoder = new Swift_Encoder_Rfc2231Encoder(new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'));
- $grammar = new Swift_Mime_Grammar();
- $headerFactory = new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $grammar);
- $headers = $this->getMockery('Swift_Mime_HeaderSet');
+ $headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(new Swift_CharacterStream_CharacterStream($factory, 'utf-8'));
+ $paramEncoder = new Swift_Encoder_Rfc2231Encoder(new Swift_CharacterStream_CharacterStream($factory, 'utf-8'));
+ $emailValidator = new EmailValidator();
+ $headerFactory = new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $emailValidator);
+ $headers = $this->getMockery('Swift_Mime_SimpleHeaderSet');
$headers->shouldReceive('listAll')
->zeroOrMoreTimes()
- ->andReturn(array('From', 'To', 'Date', 'Subject'));
+ ->andReturn(['From', 'To', 'Date', 'Subject']);
$headers->shouldReceive('has')
->zeroOrMoreTimes()
->with('From')
@@ -186,7 +181,7 @@ private function _createHeaders()
$headers->shouldReceive('getAll')
->zeroOrMoreTimes()
->with('From')
- ->andReturn(array($headerFactory->createMailboxHeader('From', 'test@test.test')));
+ ->andReturn([$headerFactory->createMailboxHeader('From', 'test@test.test')]);
$headers->shouldReceive('has')
->zeroOrMoreTimes()
->with('To')
@@ -194,7 +189,7 @@ private function _createHeaders()
$headers->shouldReceive('getAll')
->zeroOrMoreTimes()
->with('To')
- ->andReturn(array($headerFactory->createMailboxHeader('To', 'test@test.test')));
+ ->andReturn([$headerFactory->createMailboxHeader('To', 'test@test.test')]);
$headers->shouldReceive('has')
->zeroOrMoreTimes()
->with('Date')
@@ -202,7 +197,7 @@ private function _createHeaders()
$headers->shouldReceive('getAll')
->zeroOrMoreTimes()
->with('Date')
- ->andReturn(array($headerFactory->createTextHeader('Date', 'Fri, 11 Mar 2011 20:56:12 +0000 (GMT)')));
+ ->andReturn([$headerFactory->createTextHeader('Date', 'Fri, 11 Mar 2011 20:56:12 +0000 (GMT)')]);
$headers->shouldReceive('has')
->zeroOrMoreTimes()
->with('Subject')
@@ -210,7 +205,7 @@ private function _createHeaders()
$headers->shouldReceive('getAll')
->zeroOrMoreTimes()
->with('Subject')
- ->andReturn(array($headerFactory->createTextHeader('Subject', 'Foo Bar Text Message')));
+ ->andReturn([$headerFactory->createTextHeader('Subject', 'Foo Bar Text Message')]);
$headers->shouldReceive('addTextHeader')
->zeroOrMoreTimes()
->with('DKIM-Signature', \Mockery::any())
@@ -218,7 +213,7 @@ private function _createHeaders()
$headers->shouldReceive('getAll')
->zeroOrMoreTimes()
->with('DKIM-Signature')
- ->andReturn(array($headerFactory->createTextHeader('DKIM-Signature', 'Foo Bar Text Message')));
+ ->andReturn([$headerFactory->createTextHeader('DKIM-Signature', 'Foo Bar Text Message')]);
return $headers;
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/SMimeSignerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/SMimeSignerTest.php
index 5069c1f..932e486 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/SMimeSignerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Signers/SMimeSignerTest.php
@@ -1,6 +1,6 @@
samplesDir = str_replace('\\', '/', realpath(__DIR__.'/../../../_samples/')).'/';
}
- public function testUnSingedMessage()
+ public function testUnSignedMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$this->assertEquals('Here is the message itself', $message->getBody());
}
- public function testSingedMessage()
+ public function testSignedMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$signer = new Swift_Signers_SMimeSigner();
@@ -70,11 +70,66 @@ public function testSingedMessage()
unset($messageStream);
}
- public function testSingedMessageExtraCerts()
+ public function testSignedMessageWithFullyWrappedMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Middle-out compression secrets'))
+ ->setFrom(['richard@piedpiper.com' => 'Richard Hendricks'])
+ ->setTo(['jared@piedpiper.com' => 'Jared Dunn'])
+ ->setBody('Here goes the entire algorithm...');
+
+ $signer = new Swift_Signers_SMimeSigner();
+ $signer->setSignCertificate($this->samplesDir.'smime/sign.crt', $this->samplesDir.'smime/sign.key');
+
+ // Tell the signer to wrap the full MIME message
+ $signer->setWrapFullMessage(true);
+ $message->attachSigner($signer);
+
+ $messageStream = $this->newFilteredStream();
+ $message->toByteStream($messageStream);
+ $messageStream->commit();
+
+ $entityString = $messageStream->getContent();
+ $headers = self::getHeadersOfMessage($entityString);
+
+ if (!($boundary = $this->getBoundary($headers['content-type']))) {
+ return false;
+ }
+
+ $expectedBody = <<
+Date: .*
+Subject: Middle-out compression secrets
+From: Richard Hendricks
+To: Jared Dunn
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: quoted-printable
+
+Here goes the entire algorithm...
+--$boundary
+Content-Type: application/(x\-)?pkcs7-signature; name="smime\.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime\.p7s"
+
+(?:^[a-zA-Z0-9\/\\r\\n+]*={0,2})
+
+--$boundary--
+OEL;
+ $this->assertValidVerify($expectedBody, $messageStream);
+ unset($messageStream);
+ }
+
+ public function testSignedMessageExtraCerts()
+ {
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$signer = new Swift_Signers_SMimeSigner();
@@ -113,11 +168,11 @@ public function testSingedMessageExtraCerts()
unset($messageStream);
}
- public function testSingedMessageBinary()
+ public function testSignedMessageBinary()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$signer = new Swift_Signers_SMimeSigner();
@@ -148,11 +203,11 @@ public function testSingedMessageBinary()
unset($messageStreamClean, $messageStream);
}
- public function testSingedMessageWithAttachments()
+ public function testSignedMessageWithAttachments()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$message->attach(Swift_Attachment::fromPath($this->samplesDir.'/files/textfile.zip'));
@@ -214,9 +269,9 @@ public function testSingedMessageWithAttachments()
public function testEncryptedMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$originalMessage = $this->cleanMessage($message->toString());
@@ -242,7 +297,7 @@ public function testEncryptedMessage()
$decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
- if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', array('file://'.$this->samplesDir.'smime/encrypt.key', 'swift'))) {
+ if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', ['file://'.$this->samplesDir.'smime/encrypt.key', 'swift'])) {
$this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
}
@@ -250,17 +305,62 @@ public function testEncryptedMessage()
unset($decryptedMessageStream, $messageStream);
}
+ public function testEncryptedMessageWithFullyWrappedMessage()
+ {
+ $message = (new Swift_Message('Middle-out compression secrets'))
+ ->setFrom(['richard@piedpiper.com' => 'Richard Hendricks'])
+ ->setTo(['jared@piedpiper.com' => 'Jared Dunn'])
+ ->setBody('Here goes the entire algorithm...');
+
+ $originalMessage = $message->toString();
+
+ $signer = new Swift_Signers_SMimeSigner();
+ $signer->setEncryptCertificate($this->samplesDir.'smime/encrypt.crt');
+ $signer->setWrapFullMessage(true);
+ $message->attachSigner($signer);
+
+ $messageStream = new Swift_ByteStream_TemporaryFileByteStream();
+ $message->toByteStream($messageStream);
+ $messageStream->commit();
+
+ $entityString = $messageStream->getContent();
+ $headers = self::getHeadersOfMessage($entityString);
+
+ if (!preg_match('#^application/(x\-)?pkcs7-mime; smime-type=enveloped\-data;#', $headers['content-type'])) {
+ $this->fail('Content-type does not match.');
+
+ return false;
+ }
+
+ $expectedBody = '(?:^[a-zA-Z0-9\/\\r\\n+]*={0,2})';
+
+ $decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
+
+ if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', ['file://'.$this->samplesDir.'smime/encrypt.key', 'swift'])) {
+ $this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
+ }
+
+ $decryptedMessage = $decryptedMessageStream->getContent();
+ $decryptedHeaders = self::getHeadersOfMessage($decryptedMessage);
+ $this->assertEquals('message/rfc822; charset=utf-8', $decryptedHeaders['content-type']);
+ $this->assertEquals('7bit', $decryptedHeaders['content-transfer-encoding']);
+
+ $decryptedMessageBody = self::getBodyOfMessage($decryptedMessage);
+ $this->assertEquals($originalMessage, $decryptedMessageBody);
+ unset($decryptedMessageStream, $messageStream);
+ }
+
public function testEncryptedMessageWithMultipleCerts()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$originalMessage = $this->cleanMessage($message->toString());
$signer = new Swift_Signers_SMimeSigner();
- $signer->setEncryptCertificate(array($this->samplesDir.'smime/encrypt.crt', $this->samplesDir.'smime/encrypt2.crt'));
+ $signer->setEncryptCertificate([$this->samplesDir.'smime/encrypt.crt', $this->samplesDir.'smime/encrypt2.crt']);
$message->attachSigner($signer);
$messageStream = new Swift_ByteStream_TemporaryFileByteStream();
@@ -280,7 +380,7 @@ public function testEncryptedMessageWithMultipleCerts()
$decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
- if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', array('file://'.$this->samplesDir.'smime/encrypt.key', 'swift'))) {
+ if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', ['file://'.$this->samplesDir.'smime/encrypt.key', 'swift'])) {
$this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
}
@@ -289,7 +389,7 @@ public function testEncryptedMessageWithMultipleCerts()
$decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
- if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt2.crt', array('file://'.$this->samplesDir.'smime/encrypt2.key', 'swift'))) {
+ if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt2.crt', ['file://'.$this->samplesDir.'smime/encrypt2.key', 'swift'])) {
$this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
}
@@ -299,9 +399,9 @@ public function testEncryptedMessageWithMultipleCerts()
public function testSignThenEncryptedMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
$signer = new Swift_Signers_SMimeSigner();
@@ -326,7 +426,7 @@ public function testSignThenEncryptedMessage()
$decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
- if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', array('file://'.$this->samplesDir.'smime/encrypt.key', 'swift'))) {
+ if (!openssl_pkcs7_decrypt($messageStream->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', ['file://'.$this->samplesDir.'smime/encrypt.key', 'swift'])) {
$this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
}
@@ -364,14 +464,14 @@ public function testSignThenEncryptedMessage()
public function testEncryptThenSignMessage()
{
- $message = Swift_SignedMessage::newInstance('Wonderful Subject')
- ->setFrom(array('john@doe.com' => 'John Doe'))
- ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
+ $message = (new Swift_Message('Wonderful Subject'))
+ ->setFrom(['john@doe.com' => 'John Doe'])
+ ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
->setBody('Here is the message itself');
- $originalMessage = $this->cleanMessage($message->toString());
+ $originalMessage = $message->toString();
- $signer = Swift_Signers_SMimeSigner::newInstance();
+ $signer = new Swift_Signers_SMimeSigner();
$signer->setSignCertificate($this->samplesDir.'smime/sign.crt', $this->samplesDir.'smime/sign.key');
$signer->setEncryptCertificate($this->samplesDir.'smime/encrypt.crt');
$signer->setSignThenEncrypt(false);
@@ -392,10 +492,10 @@ public function testEncryptThenSignMessage()
This is an S/MIME signed message
--$boundary
-(?PMIME-Version: 1\.0
-Content-Disposition: attachment; filename="smime\.p7m"
-Content-Type: application/(x\-)?pkcs7-mime; smime-type=enveloped-data; name="smime\.p7m"
+(?PContent-Type: application/(x\-)?pkcs7-mime; smime-type=enveloped-data;
+ name="smime\.p7m"; charset=utf-8
Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime\.p7m"
(?:^[a-zA-Z0-9\/\\r\\n+]*={0,2})
@@ -426,7 +526,7 @@ public function testEncryptThenSignMessage()
$decryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();
- if (!openssl_pkcs7_decrypt($messageStreamClean->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', array('file://'.$this->samplesDir.'smime/encrypt.key', 'swift'))) {
+ if (!openssl_pkcs7_decrypt($messageStreamClean->getPath(), $decryptedMessageStream->getPath(), 'file://'.$this->samplesDir.'smime/encrypt.crt', ['file://'.$this->samplesDir.'smime/encrypt.key', 'swift'])) {
$this->fail(sprintf('Decrypt of the message failed. Internal error "%s".', openssl_error_string()));
}
@@ -441,13 +541,13 @@ protected function assertValidVerify($expected, Swift_ByteStream_TemporaryFileBy
// File is UNIX encoded so convert them to correct line ending
$expected = str_replace("\n", "\r\n", $expected);
- $actual = trim(self::getBodyOfMessage($actual));
+ $actual = self::getBodyOfMessage($actual);
if (!$this->assertRegExp('%^'.$expected.'$\s*%m', $actual)) {
return false;
}
$opensslOutput = new Swift_ByteStream_TemporaryFileByteStream();
- $verify = openssl_pkcs7_verify($messageStream->getPath(), null, $opensslOutput->getPath(), array($this->samplesDir.'smime/ca.crt'));
+ $verify = openssl_pkcs7_verify($messageStream->getPath(), null, $opensslOutput->getPath(), [$this->samplesDir.'smime/ca.crt']);
if (false === $verify) {
$this->fail('Verification of the message failed.');
@@ -484,14 +584,11 @@ protected function newFilteredStream()
protected static function getBodyOfMessage($message)
{
- return substr($message, strpos($message, "\r\n\r\n"));
+ return trim(substr($message, strpos($message, "\r\n\r\n")));
}
/**
* Strips of the sender headers and Mime-Version.
- *
- * @param Swift_ByteStream_TemporaryFileByteStream $messageStream
- * @param Swift_ByteStream_TemporaryFileByteStream $inputStream
*/
protected function cleanMessage($content)
{
@@ -499,7 +596,7 @@ protected function cleanMessage($content)
$headers = self::getHeadersOfMessage($content);
foreach ($headers as $headerName => $value) {
- if (!in_array($headerName, array('content-type', 'content-transfer-encoding', 'content-disposition'))) {
+ if (!in_array($headerName, ['content-type', 'content-transfer-encoding', 'content-disposition'])) {
continue;
}
@@ -514,7 +611,7 @@ protected function cleanMessage($content)
$newContent .= "$headerName: $value\r\n";
}
- return $newContent."\r\n".ltrim(self::getBodyOfMessage($content));
+ return $newContent."\r\n".self::getBodyOfMessage($content);
}
/**
@@ -529,17 +626,19 @@ protected function cleanMessage($content)
protected static function getHeadersOfMessage($message)
{
$headersPosEnd = strpos($message, "\r\n\r\n");
- $headerData = substr($message, 0, $headersPosEnd);
+ $headerData = trim(substr($message, 0, $headersPosEnd));
$headerLines = explode("\r\n", $headerData);
+ $headers = [];
- if (empty($headerLines)) {
- return array();
+ if (false === $headerLines) {
+ return $headers;
}
- $headers = array();
-
+ // Transform header lines into an associative array
+ $currentHeaderName = '';
foreach ($headerLines as $headerLine) {
- if (ctype_space($headerLines[0]) || false === strpos($headerLine, ':')) {
+ // Handle headers that span multiple lines
+ if (false === strpos($headerLine, ':')) {
$headers[$currentHeaderName] .= ' '.trim($headerLine);
continue;
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/ByteArrayReplacementFilterTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/ByteArrayReplacementFilterTest.php
index c85bdc1..3c81224 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/ByteArrayReplacementFilterTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/ByteArrayReplacementFilterTest.php
@@ -1,20 +1,20 @@
_createFilter(array(0x61, 0x62), array(0x63, 0x64));
+ $filter = $this->createFilter([0x61, 0x62], [0x63, 0x64]);
$this->assertEquals(
- array(0x59, 0x60, 0x63, 0x64, 0x65),
- $filter->filter(array(0x59, 0x60, 0x61, 0x62, 0x65))
+ [0x59, 0x60, 0x63, 0x64, 0x65],
+ $filter->filter([0x59, 0x60, 0x61, 0x62, 0x65])
);
}
public function testShouldBufferReturnsTrueIfPartialMatchAtEndOfBuffer()
{
- $filter = $this->_createFilter(array(0x61, 0x62), array(0x63, 0x64));
- $this->assertTrue($filter->shouldBuffer(array(0x59, 0x60, 0x61)),
+ $filter = $this->createFilter([0x61, 0x62], [0x63, 0x64]);
+ $this->assertTrue($filter->shouldBuffer([0x59, 0x60, 0x61]),
'%s: Filter should buffer since 0x61 0x62 is the needle and the ending '.
'0x61 could be from 0x61 0x62'
);
@@ -22,34 +22,34 @@ public function testShouldBufferReturnsTrueIfPartialMatchAtEndOfBuffer()
public function testFilterCanMakeMultipleReplacements()
{
- $filter = $this->_createFilter(array(array(0x61), array(0x62)), array(0x63));
+ $filter = $this->createFilter([[0x61], [0x62]], [0x63]);
$this->assertEquals(
- array(0x60, 0x63, 0x60, 0x63, 0x60),
- $filter->filter(array(0x60, 0x61, 0x60, 0x62, 0x60))
+ [0x60, 0x63, 0x60, 0x63, 0x60],
+ $filter->filter([0x60, 0x61, 0x60, 0x62, 0x60])
);
}
public function testMultipleReplacementsCanBeDifferent()
{
- $filter = $this->_createFilter(array(array(0x61), array(0x62)), array(array(0x63), array(0x64)));
+ $filter = $this->createFilter([[0x61], [0x62]], [[0x63], [0x64]]);
$this->assertEquals(
- array(0x60, 0x63, 0x60, 0x64, 0x60),
- $filter->filter(array(0x60, 0x61, 0x60, 0x62, 0x60))
+ [0x60, 0x63, 0x60, 0x64, 0x60],
+ $filter->filter([0x60, 0x61, 0x60, 0x62, 0x60])
);
}
public function testShouldBufferReturnsFalseIfPartialMatchNotAtEndOfString()
{
- $filter = $this->_createFilter(array(0x0D, 0x0A), array(0x0A));
- $this->assertFalse($filter->shouldBuffer(array(0x61, 0x62, 0x0D, 0x0A, 0x63)),
+ $filter = $this->createFilter([0x0D, 0x0A], [0x0A]);
+ $this->assertFalse($filter->shouldBuffer([0x61, 0x62, 0x0D, 0x0A, 0x63]),
'%s: Filter should not buffer since x0Dx0A is the needle and is not at EOF'
);
}
public function testShouldBufferReturnsTrueIfAnyOfMultipleMatchesAtEndOfString()
{
- $filter = $this->_createFilter(array(array(0x61, 0x62), array(0x63)), array(0x64));
- $this->assertTrue($filter->shouldBuffer(array(0x59, 0x60, 0x61)),
+ $filter = $this->createFilter([[0x61, 0x62], [0x63]], [0x64]);
+ $this->assertTrue($filter->shouldBuffer([0x59, 0x60, 0x61]),
'%s: Filter should buffer since 0x61 0x62 is a needle and the ending '.
'0x61 could be from 0x61 0x62'
);
@@ -57,53 +57,53 @@ public function testShouldBufferReturnsTrueIfAnyOfMultipleMatchesAtEndOfString()
public function testConvertingAllLineEndingsToCRLFWhenInputIsLF()
{
- $filter = $this->_createFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ $filter = $this->createFilter(
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
);
$this->assertEquals(
- array(0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63),
- $filter->filter(array(0x60, 0x0A, 0x61, 0x0A, 0x62, 0x0A, 0x63))
+ [0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63],
+ $filter->filter([0x60, 0x0A, 0x61, 0x0A, 0x62, 0x0A, 0x63])
);
}
public function testConvertingAllLineEndingsToCRLFWhenInputIsCR()
{
- $filter = $this->_createFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ $filter = $this->createFilter(
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
);
$this->assertEquals(
- array(0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63),
- $filter->filter(array(0x60, 0x0D, 0x61, 0x0D, 0x62, 0x0D, 0x63))
+ [0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63],
+ $filter->filter([0x60, 0x0D, 0x61, 0x0D, 0x62, 0x0D, 0x63])
);
}
public function testConvertingAllLineEndingsToCRLFWhenInputIsCRLF()
{
- $filter = $this->_createFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ $filter = $this->createFilter(
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
);
$this->assertEquals(
- array(0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63),
- $filter->filter(array(0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63))
+ [0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63],
+ $filter->filter([0x60, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x63])
);
}
public function testConvertingAllLineEndingsToCRLFWhenInputIsLFCR()
{
- $filter = $this->_createFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ $filter = $this->createFilter(
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
);
$this->assertEquals(
- array(0x60, 0x0D, 0x0A, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x0D, 0x0A, 0x63),
- $filter->filter(array(0x60, 0x0A, 0x0D, 0x61, 0x0A, 0x0D, 0x62, 0x0A, 0x0D, 0x63))
+ [0x60, 0x0D, 0x0A, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x0D, 0x0A, 0x63],
+ $filter->filter([0x60, 0x0A, 0x0D, 0x61, 0x0A, 0x0D, 0x62, 0x0A, 0x0D, 0x63])
);
}
@@ -111,18 +111,18 @@ public function testConvertingAllLineEndingsToCRLFWhenInputContainsLFLF()
{
//Lighthouse Bug #23
- $filter = $this->_createFilter(
- array(array(0x0D, 0x0A), array(0x0D), array(0x0A)),
- array(array(0x0A), array(0x0A), array(0x0D, 0x0A))
+ $filter = $this->createFilter(
+ [[0x0D, 0x0A], [0x0D], [0x0A]],
+ [[0x0A], [0x0A], [0x0D, 0x0A]]
);
$this->assertEquals(
- array(0x60, 0x0D, 0x0A, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x0D, 0x0A, 0x63),
- $filter->filter(array(0x60, 0x0A, 0x0A, 0x61, 0x0A, 0x0A, 0x62, 0x0A, 0x0A, 0x63))
+ [0x60, 0x0D, 0x0A, 0x0D, 0x0A, 0x61, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x0D, 0x0A, 0x0D, 0x0A, 0x63],
+ $filter->filter([0x60, 0x0A, 0x0A, 0x61, 0x0A, 0x0A, 0x62, 0x0A, 0x0A, 0x63])
);
}
- private function _createFilter($search, $replace)
+ private function createFilter($search, $replace)
{
return new Swift_StreamFilters_ByteArrayReplacementFilter($search, $replace);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterFactoryTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterFactoryTest.php
index c14d5dc..514829f 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterFactoryTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterFactoryTest.php
@@ -1,10 +1,10 @@
_createFactory();
+ $factory = $this->createFactory();
$this->assertInstanceOf(
'Swift_StreamFilters_StringReplacementFilter',
$factory->createFilter('a', 'b')
@@ -13,7 +13,7 @@ public function testInstancesOfStringReplacementFilterAreCreated()
public function testSameInstancesAreCached()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$filter1 = $factory->createFilter('a', 'b');
$filter2 = $factory->createFilter('a', 'b');
$this->assertSame($filter1, $filter2, '%s: Instances should be cached');
@@ -21,7 +21,7 @@ public function testSameInstancesAreCached()
public function testDifferingInstancesAreNotCached()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$filter1 = $factory->createFilter('a', 'b');
$filter2 = $factory->createFilter('a', 'c');
$this->assertNotEquals($filter1, $filter2,
@@ -29,7 +29,7 @@ public function testDifferingInstancesAreNotCached()
);
}
- private function _createFactory()
+ private function createFactory()
{
return new Swift_StreamFilters_StringReplacementFilterFactory();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterTest.php
index 681e235..1a5f4dc 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/StreamFilters/StringReplacementFilterTest.php
@@ -1,16 +1,16 @@
_createFilter('foo', 'bar');
+ $filter = $this->createFilter('foo', 'bar');
$this->assertEquals('XbarYbarZ', $filter->filter('XfooYfooZ'));
}
public function testShouldBufferReturnsTrueIfPartialMatchAtEndOfBuffer()
{
- $filter = $this->_createFilter('foo', 'bar');
+ $filter = $this->createFilter('foo', 'bar');
$this->assertTrue($filter->shouldBuffer('XfooYf'),
'%s: Filter should buffer since "foo" is the needle and the ending '.
'"f" could be from "foo"'
@@ -19,19 +19,19 @@ public function testShouldBufferReturnsTrueIfPartialMatchAtEndOfBuffer()
public function testFilterCanMakeMultipleReplacements()
{
- $filter = $this->_createFilter(array('a', 'b'), 'foo');
+ $filter = $this->createFilter(['a', 'b'], 'foo');
$this->assertEquals('XfooYfooZ', $filter->filter('XaYbZ'));
}
public function testMultipleReplacementsCanBeDifferent()
{
- $filter = $this->_createFilter(array('a', 'b'), array('foo', 'zip'));
+ $filter = $this->createFilter(['a', 'b'], ['foo', 'zip']);
$this->assertEquals('XfooYzipZ', $filter->filter('XaYbZ'));
}
public function testShouldBufferReturnsFalseIfPartialMatchNotAtEndOfString()
{
- $filter = $this->_createFilter("\r\n", "\n");
+ $filter = $this->createFilter("\r\n", "\n");
$this->assertFalse($filter->shouldBuffer("foo\r\nbar"),
'%s: Filter should not buffer since x0Dx0A is the needle and is not at EOF'
);
@@ -39,7 +39,7 @@ public function testShouldBufferReturnsFalseIfPartialMatchNotAtEndOfString()
public function testShouldBufferReturnsTrueIfAnyOfMultipleMatchesAtEndOfString()
{
- $filter = $this->_createFilter(array('foo', 'zip'), 'bar');
+ $filter = $this->createFilter(['foo', 'zip'], 'bar');
$this->assertTrue($filter->shouldBuffer('XfooYzi'),
'%s: Filter should buffer since "zip" is a needle and the ending '.
'"zi" could be from "zip"'
@@ -48,11 +48,11 @@ public function testShouldBufferReturnsTrueIfAnyOfMultipleMatchesAtEndOfString()
public function testShouldBufferReturnsFalseOnEmptyBuffer()
{
- $filter = $this->_createFilter("\r\n", "\n");
+ $filter = $this->createFilter("\r\n", "\n");
$this->assertFalse($filter->shouldBuffer(''));
}
- private function _createFilter($search, $replace)
+ private function createFilter($search, $replace)
{
return new Swift_StreamFilters_StringReplacementFilter($search, $replace);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpEventSupportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpEventSupportTest.php
index 81bda4f..896171d 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpEventSupportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpEventSupportTest.php
@@ -6,10 +6,10 @@ abstract class Swift_Transport_AbstractSmtpEventSupportTest extends Swift_Transp
{
public function testRegisterPluginLoadsPluginInEventDispatcher()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$listener = $this->getMockery('Swift_Events_EventListener');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('bindEventListener')
->once()
->with($listener);
@@ -19,18 +19,18 @@ public function testRegisterPluginLoadsPluginInEventDispatcher()
public function testSendingDispatchesBeforeSendEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
- $message = $this->_createMessage();
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
+ $message = $this->createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('mark@swiftmailer.org' => 'Mark'));
+ ->andReturn(['mark@swiftmailer.org' => 'Mark']);
$dispatcher->shouldReceive('createSendEvent')
->once()
->andReturn($evt);
@@ -43,25 +43,25 @@ public function testSendingDispatchesBeforeSendEvent()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(1, $smtp->send($message));
}
public function testSendingDispatchesSendEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
- $message = $this->_createMessage();
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
+ $message = $this->createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('mark@swiftmailer.org' => 'Mark'));
+ ->andReturn(['mark@swiftmailer.org' => 'Mark']);
$dispatcher->shouldReceive('createSendEvent')
->once()
->andReturn($evt);
@@ -74,25 +74,25 @@ public function testSendingDispatchesSendEvent()
->zeroOrMoreTimes()
->andReturn(false);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(1, $smtp->send($message));
}
public function testSendEventCapturesFailures()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
- $message = $this->_createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('mark@swiftmailer.org' => 'Mark'));
+ ->andReturn(['mark@swiftmailer.org' => 'Mark']);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -123,27 +123,27 @@ public function testSendEventCapturesFailures()
->andReturn(false);
$evt->shouldReceive('setFailedRecipients')
->once()
- ->with(array('mark@swiftmailer.org'));
+ ->with(['mark@swiftmailer.org']);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(0, $smtp->send($message));
}
public function testSendEventHasResultFailedIfAllFailures()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
- $message = $this->_createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('mark@swiftmailer.org' => 'Mark'));
+ ->andReturn(['mark@swiftmailer.org' => 'Mark']);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -176,28 +176,28 @@ public function testSendEventHasResultFailedIfAllFailures()
->once()
->with(Swift_Events_SendEvent::RESULT_FAILED);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(0, $smtp->send($message));
}
public function testSendEventHasResultTentativeIfSomeFailures()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
- $message = $this->_createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'mark@swiftmailer.org' => 'Mark',
'chris@site.tld' => 'Chris',
- ));
+ ]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -230,28 +230,28 @@ public function testSendEventHasResultTentativeIfSomeFailures()
->once()
->with(Swift_Events_SendEvent::RESULT_TENTATIVE);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(1, $smtp->send($message));
}
public function testSendEventHasResultSuccessIfNoFailures()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
- $message = $this->_createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'mark@swiftmailer.org' => 'Mark',
'chris@site.tld' => 'Chris',
- ));
+ ]);
$dispatcher->shouldReceive('createSendEvent')
->zeroOrMoreTimes()
->with($smtp, \Mockery::any())
@@ -268,25 +268,25 @@ public function testSendEventHasResultSuccessIfNoFailures()
->once()
->with(Swift_Events_SendEvent::RESULT_SUCCESS);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(2, $smtp->send($message));
}
public function testCancellingEventBubbleBeforeSendStopsEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_SendEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
- $message = $this->_createMessage();
+ $smtp = $this->getTransport($buf, $dispatcher);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('chris@swiftmailer.org' => null));
+ ->andReturn(['chris@swiftmailer.org' => null]);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('mark@swiftmailer.org' => 'Mark'));
+ ->andReturn(['mark@swiftmailer.org' => 'Mark']);
$dispatcher->shouldReceive('createSendEvent')
->zeroOrMoreTimes()
->with($smtp, \Mockery::any())
@@ -300,17 +300,17 @@ public function testCancellingEventBubbleBeforeSendStopsEvent()
->atLeast()->once()
->andReturn(true);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(0, $smtp->send($message));
}
public function testStartingTransportDispatchesTransportChangeEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createTransportChangeEvent')
->atLeast()->once()
@@ -325,16 +325,16 @@ public function testStartingTransportDispatchesTransportChangeEvent()
->atLeast()->once()
->andReturn(false);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
}
public function testStartingTransportDispatchesBeforeTransportChangeEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createTransportChangeEvent')
->atLeast()->once()
@@ -349,16 +349,16 @@ public function testStartingTransportDispatchesBeforeTransportChangeEvent()
->atLeast()->once()
->andReturn(false);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
}
public function testCancellingBubbleBeforeTransportStartStopsEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createTransportChangeEvent')
->atLeast()->once()
@@ -373,7 +373,7 @@ public function testCancellingBubbleBeforeTransportStartStopsEvent()
->atLeast()->once()
->andReturn(true);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertFalse($smtp->isStarted(),
@@ -383,10 +383,10 @@ public function testCancellingBubbleBeforeTransportStartStopsEvent()
public function testStoppingTransportDispatchesTransportChangeEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createTransportChangeEvent')
->atLeast()->once()
@@ -398,17 +398,17 @@ public function testStoppingTransportDispatchesTransportChangeEvent()
$dispatcher->shouldReceive('dispatchEvent')
->zeroOrMoreTimes();
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->stop();
}
public function testStoppingTransportDispatchesBeforeTransportChangeEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent')->shouldIgnoreMissing();
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createTransportChangeEvent')
->atLeast()->once()
@@ -420,17 +420,17 @@ public function testStoppingTransportDispatchesBeforeTransportChangeEvent()
$dispatcher->shouldReceive('dispatchEvent')
->zeroOrMoreTimes();
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->stop();
}
public function testCancellingBubbleBeforeTransportStoppedStopsEvent()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportChangeEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$hasRun = false;
$dispatcher->shouldReceive('createTransportChangeEvent')
@@ -451,7 +451,7 @@ public function testCancellingBubbleBeforeTransportStoppedStopsEvent()
return $hasRun;
});
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->stop();
@@ -462,10 +462,10 @@ public function testCancellingBubbleBeforeTransportStoppedStopsEvent()
public function testResponseEventsAreGenerated()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_ResponseEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createResponseEvent')
->atLeast()->once()
@@ -475,16 +475,16 @@ public function testResponseEventsAreGenerated()
->atLeast()->once()
->with($evt, 'responseReceived');
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
}
public function testCommandEventsAreGenerated()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_CommandEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$dispatcher->shouldReceive('createCommandEvent')
->once()
@@ -494,16 +494,16 @@ public function testCommandEventsAreGenerated()
->once()
->with($evt, 'commandSent');
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
}
public function testExceptionsCauseExceptionEvents()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportExceptionEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$buf->shouldReceive('readLine')
->atLeast()->once()
@@ -528,10 +528,10 @@ public function testExceptionsCauseExceptionEvents()
public function testExceptionBubblesCanBeCancelled()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher(false);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher(false);
$evt = $this->getMockery('Swift_Events_TransportExceptionEvent');
- $smtp = $this->_getTransport($buf, $dispatcher);
+ $smtp = $this->getTransport($buf, $dispatcher);
$buf->shouldReceive('readLine')
->atLeast()->once()
@@ -547,11 +547,11 @@ public function testExceptionBubblesCanBeCancelled()
->atLeast()->once()
->andReturn(true);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
}
- protected function _createEventDispatcher($stub = true)
+ protected function createEventDispatcher($stub = true)
{
return $this->getMockery('Swift_Events_EventDispatcher')->shouldIgnoreMissing();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpTest.php
index f49b489..4c837fa 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/AbstractSmtpTest.php
@@ -2,8 +2,7 @@
abstract class Swift_Transport_AbstractSmtpTest extends \SwiftMailerTestCase
{
- /** Abstract test method */
- abstract protected function _getTransport($buf);
+ abstract protected function getTransport($buf);
public function testStartAccepts220ServiceGreeting()
{
@@ -18,8 +17,8 @@ public function testStartAccepts220ServiceGreeting()
E: 554
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('readLine')
@@ -27,7 +26,7 @@ public function testStartAccepts220ServiceGreeting()
->with(0)
->andReturn("220 some.server.tld bleh\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$this->assertFalse($smtp->isStarted(), '%s: SMTP should begin non-started');
$smtp->start();
@@ -39,20 +38,20 @@ public function testStartAccepts220ServiceGreeting()
public function testBadGreetingCausesException()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('readLine')
->once()
->with(0)
->andReturn("554 I'm busy\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$this->assertFalse($smtp->isStarted(), '%s: SMTP should begin non-started');
$smtp->start();
$this->fail('554 greeting indicates an error and should cause an exception');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
$this->assertFalse($smtp->isStarted(), '%s: start() should have failed');
}
}
@@ -93,8 +92,8 @@ public function testStartSendsHeloToInitiate()
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -104,14 +103,14 @@ public function testStartSendsHeloToInitiate()
->andReturn("220 some.server.tld bleh\r\n");
$buf->shouldReceive('write')
->once()
- ->with('~^HELO .*?\r\n$~D')
+ ->with('~^HELO example.org\r\n$~D')
->andReturn(1);
$buf->shouldReceive('readLine')
->once()
->with(1)
->andReturn('250 ServerName'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
} catch (Exception $e) {
@@ -121,8 +120,8 @@ public function testStartSendsHeloToInitiate()
public function testInvalidHeloResponseCausesException()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -132,19 +131,19 @@ public function testInvalidHeloResponseCausesException()
->andReturn("220 some.server.tld bleh\r\n");
$buf->shouldReceive('write')
->once()
- ->with('~^HELO .*?\r\n$~D')
+ ->with('~^HELO example.org\r\n$~D')
->andReturn(1);
$buf->shouldReceive('readLine')
->once()
->with(1)
->andReturn('504 WTF'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$this->assertFalse($smtp->isStarted(), '%s: SMTP should begin non-started');
$smtp->start();
$this->fail('Non 250 HELO response should raise Exception');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
$this->assertFalse($smtp->isStarted(), '%s: SMTP start() should have failed');
}
}
@@ -162,8 +161,8 @@ public function testDomainNameIsPlacedInHelo()
identifying the client.
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -180,7 +179,7 @@ public function testDomainNameIsPlacedInHelo()
->with(1)
->andReturn('250 ServerName'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->setLocalDomain('mydomain.com');
$smtp->start();
}
@@ -222,15 +221,15 @@ public function testSuccessfulMailCommand()
E: 552, 451, 452, 550, 553, 503
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('write')
@@ -242,7 +241,7 @@ public function testSuccessfulMailCommand()
->with(1)
->andReturn("250 OK\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
@@ -253,16 +252,16 @@ public function testSuccessfulMailCommand()
public function testInvalidResponseCodeFromMailCausesException()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -272,30 +271,30 @@ public function testInvalidResponseCodeFromMailCausesException()
->with(1)
->andReturn('553 Bad'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
$this->fail('MAIL FROM should accept a 250 response');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
}
}
public function testSenderIsPreferredOverFrom()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getSender')
->once()
- ->andReturn(array('another@domain.com' => 'Someone'));
+ ->andReturn(['another@domain.com' => 'Someone']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -305,29 +304,29 @@ public function testSenderIsPreferredOverFrom()
->with(1)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testReturnPathIsPreferredOverSender()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getSender')
->once()
- ->andReturn(array('another@domain.com' => 'Someone'));
+ ->andReturn(['another@domain.com' => 'Someone']);
$message->shouldReceive('getReturnPath')
->once()
->andReturn('more@domain.com');
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -337,7 +336,7 @@ public function testReturnPathIsPreferredOverSender()
->with(1)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
@@ -392,16 +391,16 @@ public function testSuccessfulRcptCommandWith250Response()
//We'll treat 252 as accepted since it isn't really a failure
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -419,7 +418,7 @@ public function testSuccessfulRcptCommandWith250Response()
->with(2)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
@@ -428,18 +427,101 @@ public function testSuccessfulRcptCommandWith250Response()
}
}
+ public function testUtf8AddressWithIdnEncoder()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
+
+ $message->shouldReceive('getFrom')
+ ->once()
+ ->andReturn(['me@dömain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->once()
+ ->andReturn(['foo@bär' => null]);
+ $buf->shouldReceive('write')
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 OK'."\r\n");
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $smtp->send($message);
+ }
+
+ public function testUtf8AddressWithUtf8Encoder()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf, null, new Swift_AddressEncoder_Utf8AddressEncoder());
+ $message = $this->createMessage();
+
+ $message->shouldReceive('getFrom')
+ ->once()
+ ->andReturn(['më@dömain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->once()
+ ->andReturn(['föö@bär' => null]);
+ $buf->shouldReceive('write')
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 OK'."\r\n");
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $smtp->send($message);
+ }
+
+ public function testNonEncodableSenderCausesException()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
+
+ $message->shouldReceive('getFrom')
+ ->once()
+ ->andReturn(['më@domain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->once()
+ ->andReturn(['foo@bar' => null]);
+
+ $this->finishBuffer($buf);
+ try {
+ $smtp->start();
+ $smtp->send($message);
+ $this->fail('më@domain.com cannot be encoded (not observed)');
+ } catch (Swift_AddressEncoderException $e) {
+ $this->assertEquals('më@domain.com', $e->getAddress());
+ }
+ }
+
public function testMailFromCommandIsOnlySentOncePerMessage()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -460,27 +542,28 @@ public function testMailFromCommandIsOnlySentOncePerMessage()
->never()
->with("MAIL FROM:\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testMultipleRecipientsSendsMultipleRcpt()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array(
+ ->andReturn([
'foo@bar' => null,
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ 'tëst@domain' => 'Test user',
+ ]);
$buf->shouldReceive('write')
->once()
->with("RCPT TO:\r\n")
@@ -506,29 +589,29 @@ public function testMultipleRecipientsSendsMultipleRcpt()
->with(3)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testCcRecipientsSendsMultipleRcpt()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getCc')
->once()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$buf->shouldReceive('write')
->once()
->with("RCPT TO:\r\n")
@@ -554,29 +637,29 @@ public function testCcRecipientsSendsMultipleRcpt()
->with(3)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testSendReturnsNumberOfSuccessfulRecipients()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getCc')
->once()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$buf->shouldReceive('write')
->once()
->with("RCPT TO:\r\n")
@@ -602,7 +685,7 @@ public function testSendReturnsNumberOfSuccessfulRecipients()
->with(3)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(2, $smtp->send($message),
'%s: 1 of 3 recipients failed so 2 should be returned'
@@ -625,16 +708,16 @@ public function testRsetIsSentIfNoSuccessfulRecipients()
S: 250
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("RCPT TO:\r\n")
@@ -652,7 +735,7 @@ public function testRsetIsSentIfNoSuccessfulRecipients()
->with(2)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(0, $smtp->send($message),
'%s: 1 of 1 recipients failed so 0 should be returned'
@@ -691,16 +774,16 @@ public function testSuccessfulDataCommand()
E: 451, 554, 503
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("DATA\r\n")
@@ -710,7 +793,7 @@ public function testSuccessfulDataCommand()
->with(1)
->andReturn('354 Go ahead'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
@@ -721,16 +804,16 @@ public function testSuccessfulDataCommand()
public function testBadDataResponseCausesException()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("DATA\r\n")
@@ -740,27 +823,27 @@ public function testBadDataResponseCausesException()
->with(1)
->andReturn('451 Bad'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
$this->fail('354 is the expected response to DATA (not observed)');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
}
}
public function testMessageIsStreamedToBufferForData()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("DATA\r\n")
@@ -778,23 +861,23 @@ public function testMessageIsStreamedToBufferForData()
->with(2)
->andReturn('250 OK'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testBadResponseAfterDataTransmissionCausesException()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->once()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->once()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('write')
->once()
->with("DATA\r\n")
@@ -812,12 +895,12 @@ public function testBadResponseAfterDataTransmissionCausesException()
->with(2)
->andReturn('554 Error'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
$smtp->send($message);
$this->fail('250 is the expected response after a DATA transmission (not observed)');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
}
}
@@ -840,65 +923,65 @@ public function testBccRecipientsAreRemovedFromHeaders()
transaction containing only a single RCPT command.
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getBcc')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$message->shouldReceive('setBcc')
->once()
- ->with(array());
+ ->with([]);
$message->shouldReceive('setBcc')
->zeroOrMoreTimes();
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
public function testEachBccRecipientIsSentASeparateMessage()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getBcc')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$message->shouldReceive('setBcc')
->atLeast()->once()
- ->with(array());
+ ->with([]);
$message->shouldReceive('setBcc')
->once()
- ->with(array('zip@button' => 'Zip Button'));
+ ->with(['zip@button' => 'Zip Button']);
$message->shouldReceive('setBcc')
->once()
- ->with(array('test@domain' => 'Test user'));
+ ->with(['test@domain' => 'Test user']);
$message->shouldReceive('setBcc')
->atLeast()->once()
- ->with(array(
+ ->with([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$buf->shouldReceive('write')->once()->with("MAIL FROM:\r\n")->andReturn(1);
$buf->shouldReceive('readLine')->once()->with(1)->andReturn("250 OK\r\n");
@@ -927,38 +1010,38 @@ public function testEachBccRecipientIsSentASeparateMessage()
$buf->shouldReceive('write')->once()->with("\r\n.\r\n")->andReturn(12);
$buf->shouldReceive('readLine')->once()->with(12)->andReturn("250 OK\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(3, $smtp->send($message));
}
public function testMessageStateIsRestoredOnFailure()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getBcc')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$message->shouldReceive('setBcc')
->once()
- ->with(array());
+ ->with([]);
$message->shouldReceive('setBcc')
->once()
- ->with(array(
+ ->with([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$buf->shouldReceive('write')
->once()
->with("MAIL FROM:\r\n")
@@ -984,13 +1067,13 @@ public function testMessageStateIsRestoredOnFailure()
->with(3)
->andReturn("451 No\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
try {
$smtp->send($message);
$this->fail('A bad response was given so exception is expected');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
}
}
@@ -1018,9 +1101,9 @@ public function testStopSendsQuitCommand()
"QUIT" CRLF
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('write')
@@ -1034,7 +1117,7 @@ public function testStopSendsQuitCommand()
$buf->shouldReceive('terminate')
->once();
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$this->assertFalse($smtp->isStarted());
$smtp->start();
@@ -1045,17 +1128,17 @@ public function testStopSendsQuitCommand()
public function testBufferCanBeFetched()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ref = $smtp->getBuffer();
$this->assertEquals($buf, $ref);
}
public function testBufferCanBeWrittenToUsingExecuteCommand()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with("FOO\r\n")
@@ -1071,9 +1154,9 @@ public function testBufferCanBeWrittenToUsingExecuteCommand()
public function testResponseCodesAreValidated()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with("FOO\r\n")
@@ -1084,45 +1167,45 @@ public function testResponseCodesAreValidated()
->andReturn("551 Not ok\r\n");
try {
- $smtp->executeCommand("FOO\r\n", array(250, 251));
+ $smtp->executeCommand("FOO\r\n", [250, 251]);
$this->fail('A 250 or 251 response was needed but 551 was returned.');
- } catch (Exception $e) {
+ } catch (Swift_TransportException $e) {
}
}
public function testFailedRecipientsCanBeCollectedByReference()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('getBcc')
->zeroOrMoreTimes()
- ->andReturn(array(
+ ->andReturn([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$message->shouldReceive('setBcc')
->atLeast()->once()
- ->with(array());
+ ->with([]);
$message->shouldReceive('setBcc')
->once()
- ->with(array('zip@button' => 'Zip Button'));
+ ->with(['zip@button' => 'Zip Button']);
$message->shouldReceive('setBcc')
->once()
- ->with(array('test@domain' => 'Test user'));
+ ->with(['test@domain' => 'Test user']);
$message->shouldReceive('setBcc')
->atLeast()->once()
- ->with(array(
+ ->with([
'zip@button' => 'Zip Button',
'test@domain' => 'Test user',
- ));
+ ]);
$buf->shouldReceive('write')->once()->with("MAIL FROM:\r\n")->andReturn(1);
$buf->shouldReceive('readLine')->once()->with(1)->andReturn("250 OK\r\n");
@@ -1147,44 +1230,112 @@ public function testFailedRecipientsCanBeCollectedByReference()
$buf->shouldReceive('write')->once()->with("RSET\r\n")->andReturn(11);
$buf->shouldReceive('readLine')->once()->with(11)->andReturn("250 OK\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$this->assertEquals(1, $smtp->send($message, $failures));
- $this->assertEquals(array('zip@button', 'test@domain'), $failures,
+ $this->assertEquals(['zip@button', 'test@domain'], $failures,
'%s: Failures should be caught in an array'
);
}
public function testSendingRegeneratesMessageId()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain.com' => 'Me'));
+ ->andReturn(['me@domain.com' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$message->shouldReceive('generateId')
->once();
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->start();
$smtp->send($message);
}
- protected function _getBuffer()
+ public function testPing()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^NOOP\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 OK'."\r\n");
+
+ $this->finishBuffer($buf);
+ $this->assertTrue($smtp->ping());
+ }
+
+ public function testPingOnDeadConnection()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^NOOP\r\n$~D')
+ ->andThrow('Swift_TransportException');
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $this->assertTrue($smtp->isStarted());
+ $this->assertFalse($smtp->ping());
+ $this->assertFalse($smtp->isStarted());
+ }
+
+ public function testSetLocalDomain()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+
+ $smtp->setLocalDomain('example.com');
+ $this->assertEquals('example.com', $smtp->getLocalDomain());
+
+ $smtp->setLocalDomain('192.168.0.1');
+ $this->assertEquals('[192.168.0.1]', $smtp->getLocalDomain());
+
+ $smtp->setLocalDomain('[192.168.0.1]');
+ $this->assertEquals('[192.168.0.1]', $smtp->getLocalDomain());
+
+ $smtp->setLocalDomain('fd00::');
+ $this->assertEquals('[IPv6:fd00::]', $smtp->getLocalDomain());
+
+ $smtp->setLocalDomain('[IPv6:fd00::]');
+ $this->assertEquals('[IPv6:fd00::]', $smtp->getLocalDomain());
+ }
+
+ protected function getBuffer()
{
return $this->getMockery('Swift_Transport_IoBuffer')->shouldIgnoreMissing();
}
- protected function _createMessage()
+ protected function createMessage()
{
- return $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
+ return $this->getMockery('Swift_Mime_SimpleMessage')->shouldIgnoreMissing();
}
- protected function _finishBuffer($buf)
+ protected function finishBuffer($buf)
{
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
@@ -1193,7 +1344,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with('~^(EH|HE)LO .*?\r\n$~D')
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
@@ -1201,7 +1352,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with('~^MAIL FROM:<.*?>\r\n$~D')
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
@@ -1209,7 +1360,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with('~^RCPT TO:<.*?>\r\n$~D')
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
@@ -1217,7 +1368,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with("DATA\r\n")
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
@@ -1225,7 +1376,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with("\r\n.\r\n")
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
@@ -1233,7 +1384,7 @@ protected function _finishBuffer($buf)
$buf->shouldReceive('write')
->zeroOrMoreTimes()
->with("RSET\r\n")
- ->andReturn($x = uniqid());
+ ->andReturn($x = uniqid('', true));
$buf->shouldReceive('readLine')
->zeroOrMoreTimes()
->with($x)
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/CramMd5AuthenticatorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/CramMd5AuthenticatorTest.php
index aca03a9..ba131e8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/CramMd5AuthenticatorTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/CramMd5AuthenticatorTest.php
@@ -2,11 +2,11 @@
class Swift_Transport_Esmtp_Auth_CramMd5AuthenticatorTest extends \SwiftMailerTestCase
{
- private $_agent;
+ private $agent;
protected function setUp()
{
- $this->_agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
+ $this->agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
}
public function testKeywordIsCramMd5()
@@ -15,49 +15,50 @@ public function testKeywordIsCramMd5()
The authentication type associated with CRAM is "CRAM-MD5".
*/
- $cram = $this->_getAuthenticator();
+ $cram = $this->getAuthenticator();
$this->assertEquals('CRAM-MD5', $cram->getAuthKeyword());
}
public function testSuccessfulAuthentication()
{
- $cram = $this->_getAuthenticator();
+ $cram = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("AUTH CRAM-MD5\r\n", array(334))
+ ->with("AUTH CRAM-MD5\r\n", [334])
->andReturn('334 '.base64_encode('')."\r\n");
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(\Mockery::any(), array(235));
+ ->with(\Mockery::any(), [235]);
- $this->assertTrue($cram->authenticate($this->_agent, 'jack', 'pass'),
+ $this->assertTrue($cram->authenticate($this->agent, 'jack', 'pass'),
'%s: The buffer accepted all commands authentication should succeed'
);
}
- public function testAuthenticationFailureSendRsetAndReturnFalse()
+ /**
+ * @expectedException \Swift_TransportException
+ */
+ public function testAuthenticationFailureSendRset()
{
- $cram = $this->_getAuthenticator();
+ $cram = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("AUTH CRAM-MD5\r\n", array(334))
+ ->with("AUTH CRAM-MD5\r\n", [334])
->andReturn('334 '.base64_encode('')."\r\n");
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(\Mockery::any(), array(235))
+ ->with(\Mockery::any(), [235])
->andThrow(new Swift_TransportException(''));
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("RSET\r\n", array(250));
+ ->with("RSET\r\n", [250]);
- $this->assertFalse($cram->authenticate($this->_agent, 'jack', 'pass'),
- '%s: Authentication fails, so RSET should be sent'
- );
+ $cram->authenticate($this->agent, 'jack', 'pass');
}
- private function _getAuthenticator()
+ private function getAuthenticator()
{
return new Swift_Transport_Esmtp_Auth_CramMd5Authenticator();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/LoginAuthenticatorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/LoginAuthenticatorTest.php
index 13f0209..499ceb7 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/LoginAuthenticatorTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/LoginAuthenticatorTest.php
@@ -2,62 +2,63 @@
class Swift_Transport_Esmtp_Auth_LoginAuthenticatorTest extends \SwiftMailerTestCase
{
- private $_agent;
+ private $agent;
protected function setUp()
{
- $this->_agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
+ $this->agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
}
public function testKeywordIsLogin()
{
- $login = $this->_getAuthenticator();
+ $login = $this->getAuthenticator();
$this->assertEquals('LOGIN', $login->getAuthKeyword());
}
public function testSuccessfulAuthentication()
{
- $login = $this->_getAuthenticator();
+ $login = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("AUTH LOGIN\r\n", array(334));
- $this->_agent->shouldReceive('executeCommand')
+ ->with("AUTH LOGIN\r\n", [334]);
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(base64_encode('jack')."\r\n", array(334));
- $this->_agent->shouldReceive('executeCommand')
+ ->with(base64_encode('jack')."\r\n", [334]);
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(base64_encode('pass')."\r\n", array(235));
+ ->with(base64_encode('pass')."\r\n", [235]);
- $this->assertTrue($login->authenticate($this->_agent, 'jack', 'pass'),
+ $this->assertTrue($login->authenticate($this->agent, 'jack', 'pass'),
'%s: The buffer accepted all commands authentication should succeed'
);
}
- public function testAuthenticationFailureSendRsetAndReturnFalse()
+ /**
+ * @expectedException \Swift_TransportException
+ */
+ public function testAuthenticationFailureSendRset()
{
- $login = $this->_getAuthenticator();
+ $login = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("AUTH LOGIN\r\n", array(334));
- $this->_agent->shouldReceive('executeCommand')
+ ->with("AUTH LOGIN\r\n", [334]);
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(base64_encode('jack')."\r\n", array(334));
- $this->_agent->shouldReceive('executeCommand')
+ ->with(base64_encode('jack')."\r\n", [334]);
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with(base64_encode('pass')."\r\n", array(235))
+ ->with(base64_encode('pass')."\r\n", [235])
->andThrow(new Swift_TransportException(''));
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("RSET\r\n", array(250));
+ ->with("RSET\r\n", [250]);
- $this->assertFalse($login->authenticate($this->_agent, 'jack', 'pass'),
- '%s: Authentication fails, so RSET should be sent'
- );
+ $login->authenticate($this->agent, 'jack', 'pass');
}
- private function _getAuthenticator()
+ private function getAuthenticator()
{
return new Swift_Transport_Esmtp_Auth_LoginAuthenticator();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/NTLMAuthenticatorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/NTLMAuthenticatorTest.php
index 911d258..98e2e25 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/NTLMAuthenticatorTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/NTLMAuthenticatorTest.php
@@ -2,29 +2,29 @@
class Swift_Transport_Esmtp_Auth_NTLMAuthenticatorTest extends \SwiftMailerTestCase
{
- private $_message1 = '4e544c4d535350000100000007020000';
- private $_message2 = '4e544c4d53535000020000000c000c003000000035828980514246973ea892c10000000000000000460046003c00000054004500530054004e00540002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d0000000000';
- private $_message3 = '4e544c4d5353500003000000180018006000000076007600780000000c000c0040000000080008004c0000000c000c0054000000000000009a0000000102000054004500530054004e00540074006500730074004d0045004d00420045005200bf2e015119f6bdb3f6fdb768aa12d478f5ce3d2401c8f6e9caa4da8f25d5e840974ed8976d3ada46010100000000000030fa7e3c677bc301f5ce3d2401c8f6e90000000002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d000000000000000000';
+ private $message1 = '4e544c4d535350000100000007020000';
+ private $message2 = '4e544c4d53535000020000000c000c003000000035828980514246973ea892c10000000000000000460046003c00000054004500530054004e00540002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d0000000000';
+ private $message3 = '4e544c4d5353500003000000180018006000000076007600780000000c000c0040000000080008004c0000000c000c0054000000000000009a0000000102000054004500530054004e00540074006500730074004d0045004d00420045005200bf2e015119f6bdb3f6fdb768aa12d478f5ce3d2401c8f6e9caa4da8f25d5e840974ed8976d3ada46010100000000000030fa7e3c677bc301f5ce3d2401c8f6e90000000002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d000000000000000000';
protected function setUp()
{
- if (!function_exists('openssl_encrypt') || !function_exists('openssl_random_pseudo_bytes') || !function_exists('bcmul') || !function_exists('iconv')) {
+ if (!function_exists('openssl_encrypt') || !function_exists('bcmul')) {
$this->markTestSkipped('One of the required functions is not available.');
}
}
public function testKeywordIsNtlm()
{
- $login = $this->_getAuthenticator();
+ $login = $this->getAuthenticator();
$this->assertEquals('NTLM', $login->getAuthKeyword());
}
public function testMessage1Generator()
{
- $login = $this->_getAuthenticator();
- $message1 = $this->_invokePrivateMethod('createMessage1', $login);
+ $login = $this->getAuthenticator();
+ $message1 = $this->invokePrivateMethod('createMessage1', $login);
- $this->assertEquals($this->_message1, bin2hex($message1), '%s: We send the smallest ntlm message which should never fail.');
+ $this->assertEquals($this->message1, bin2hex($message1), '%s: We send the smallest ntlm message which should never fail.');
}
public function testLMv1Generator()
@@ -33,8 +33,8 @@ public function testLMv1Generator()
$challenge = 'b019d38bad875c9d';
$lmv1 = '1879f60127f8a877022132ec221bcbf3ca016a9f76095606';
- $login = $this->_getAuthenticator();
- $lmv1Result = $this->_invokePrivateMethod('createLMPassword', $login, array($password, $this->hex2bin($challenge)));
+ $login = $this->getAuthenticator();
+ $lmv1Result = $this->invokePrivateMethod('createLMPassword', $login, [$password, hex2bin($challenge)]);
$this->assertEquals($lmv1, bin2hex($lmv1Result), '%s: The keys should be the same cause we use the same values to generate them.');
}
@@ -47,8 +47,8 @@ public function testLMv2Generator()
$challenge = '0123456789abcdef';
$lmv2 = 'd6e6152ea25d03b7c6ba6629c2d6aaf0ffffff0011223344';
- $login = $this->_getAuthenticator();
- $lmv2Result = $this->_invokePrivateMethod('createLMv2Password', $login, array($password, $username, $domain, $this->hex2bin($challenge), $this->hex2bin('ffffff0011223344')));
+ $login = $this->getAuthenticator();
+ $lmv2Result = $this->invokePrivateMethod('createLMv2Password', $login, [$password, $username, $domain, hex2bin($challenge), hex2bin('ffffff0011223344')]);
$this->assertEquals($lmv2, bin2hex($lmv2Result), '%s: The keys should be the same cause we use the same values to generate them.');
}
@@ -62,8 +62,8 @@ public function testMessage3v1Generator()
$ntlmResponse = 'e6285df3287c5d194f84df1a94817c7282d09754b6f9e02a';
$message3T = '4e544c4d5353500003000000180018006000000018001800780000000c000c0040000000080008004c0000000c000c0054000000000000009a0000000102000054004500530054004e00540074006500730074004d0045004d004200450052001879f60127f8a877022132ec221bcbf3ca016a9f76095606e6285df3287c5d194f84df1a94817c7282d09754b6f9e02a';
- $login = $this->_getAuthenticator();
- $message3 = $this->_invokePrivateMethod('createMessage3', $login, array($domain, $username, $workstation, $this->hex2bin($lmResponse), $this->hex2bin($ntlmResponse)));
+ $login = $this->getAuthenticator();
+ $message3 = $this->invokePrivateMethod('createMessage3', $login, [$domain, $username, $workstation, hex2bin($lmResponse), hex2bin($ntlmResponse)]);
$this->assertEquals($message3T, bin2hex($message3), '%s: We send the same information as the example is created with so this should be the same');
}
@@ -76,18 +76,18 @@ public function testMessage3v2Generator()
$lmResponse = 'bf2e015119f6bdb3f6fdb768aa12d478f5ce3d2401c8f6e9';
$ntlmResponse = 'caa4da8f25d5e840974ed8976d3ada46010100000000000030fa7e3c677bc301f5ce3d2401c8f6e90000000002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d000000000000000000';
- $login = $this->_getAuthenticator();
- $message3 = $this->_invokePrivateMethod('createMessage3', $login, array($domain, $username, $workstation, $this->hex2bin($lmResponse), $this->hex2bin($ntlmResponse)));
+ $login = $this->getAuthenticator();
+ $message3 = $this->invokePrivateMethod('createMessage3', $login, [$domain, $username, $workstation, hex2bin($lmResponse), hex2bin($ntlmResponse)]);
- $this->assertEquals($this->_message3, bin2hex($message3), '%s: We send the same information as the example is created with so this should be the same');
+ $this->assertEquals($this->message3, bin2hex($message3), '%s: We send the same information as the example is created with so this should be the same');
}
public function testGetDomainAndUsername()
{
$username = "DOMAIN\user";
- $login = $this->_getAuthenticator();
- list($domain, $user) = $this->_invokePrivateMethod('getDomainAndUsername', $login, array($username));
+ $login = $this->getAuthenticator();
+ list($domain, $user) = $this->invokePrivateMethod('getDomainAndUsername', $login, [$username]);
$this->assertEquals('DOMAIN', $domain, '%s: the fetched domain did not match');
$this->assertEquals('user', $user, '%s: the fetched user did not match');
@@ -97,8 +97,8 @@ public function testGetDomainAndUsernameWithExtension()
{
$username = "domain.com\user";
- $login = $this->_getAuthenticator();
- list($domain, $user) = $this->_invokePrivateMethod('getDomainAndUsername', $login, array($username));
+ $login = $this->getAuthenticator();
+ list($domain, $user) = $this->invokePrivateMethod('getDomainAndUsername', $login, [$username]);
$this->assertEquals('domain.com', $domain, '%s: the fetched domain did not match');
$this->assertEquals('user', $user, '%s: the fetched user did not match');
@@ -108,8 +108,8 @@ public function testGetDomainAndUsernameWithAtSymbol()
{
$username = 'user@DOMAIN';
- $login = $this->_getAuthenticator();
- list($domain, $user) = $this->_invokePrivateMethod('getDomainAndUsername', $login, array($username));
+ $login = $this->getAuthenticator();
+ list($domain, $user) = $this->invokePrivateMethod('getDomainAndUsername', $login, [$username]);
$this->assertEquals('DOMAIN', $domain, '%s: the fetched domain did not match');
$this->assertEquals('user', $user, '%s: the fetched user did not match');
@@ -119,8 +119,8 @@ public function testGetDomainAndUsernameWithAtSymbolAndExtension()
{
$username = 'user@domain.com';
- $login = $this->_getAuthenticator();
- list($domain, $user) = $this->_invokePrivateMethod('getDomainAndUsername', $login, array($username));
+ $login = $this->getAuthenticator();
+ list($domain, $user) = $this->invokePrivateMethod('getDomainAndUsername', $login, [$username]);
$this->assertEquals('domain.com', $domain, '%s: the fetched domain did not match');
$this->assertEquals('user', $user, '%s: the fetched user did not match');
@@ -130,8 +130,8 @@ public function testGetDomainAndUsernameWithoutDomain()
{
$username = 'user';
- $login = $this->_getAuthenticator();
- list($domain, $user) = $this->_invokePrivateMethod('getDomainAndUsername', $login, array($username));
+ $login = $this->getAuthenticator();
+ list($domain, $user) = $this->invokePrivateMethod('getDomainAndUsername', $login, [$username]);
$this->assertEquals('', $domain, '%s: the fetched domain did not match');
$this->assertEquals('user', $user, '%s: the fetched user did not match');
@@ -143,71 +143,62 @@ public function testSuccessfulAuthentication()
$username = 'test';
$secret = 'test1234';
- $ntlm = $this->_getAuthenticator();
- $agent = $this->_getAgent();
+ $ntlm = $this->getAuthenticator();
+ $agent = $this->getAgent();
$agent->shouldReceive('executeCommand')
->once()
->with('AUTH NTLM '.base64_encode(
- $this->_invokePrivateMethod('createMessage1', $ntlm)
- )."\r\n", array(334))
- ->andReturn('334 '.base64_encode($this->hex2bin('4e544c4d53535000020000000c000c003000000035828980514246973ea892c10000000000000000460046003c00000054004500530054004e00540002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d0000000000')));
+ $this->invokePrivateMethod('createMessage1', $ntlm)
+ )."\r\n", [334])
+ ->andReturn('334 '.base64_encode(hex2bin('4e544c4d53535000020000000c000c003000000035828980514246973ea892c10000000000000000460046003c00000054004500530054004e00540002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d0000000000')));
$agent->shouldReceive('executeCommand')
->once()
->with(base64_encode(
- $this->_invokePrivateMethod('createMessage3', $ntlm, array($domain, $username, $this->hex2bin('4d0045004d00420045005200'), $this->hex2bin('bf2e015119f6bdb3f6fdb768aa12d478f5ce3d2401c8f6e9'), $this->hex2bin('caa4da8f25d5e840974ed8976d3ada46010100000000000030fa7e3c677bc301f5ce3d2401c8f6e90000000002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d000000000000000000'))
- ))."\r\n", array(235));
+ $this->invokePrivateMethod('createMessage3', $ntlm, [$domain, $username, hex2bin('4d0045004d00420045005200'), hex2bin('bf2e015119f6bdb3f6fdb768aa12d478f5ce3d2401c8f6e9'), hex2bin('caa4da8f25d5e840974ed8976d3ada46010100000000000030fa7e3c677bc301f5ce3d2401c8f6e90000000002000c0054004500530054004e00540001000c004d0045004d0042004500520003001e006d0065006d006200650072002e0074006500730074002e0063006f006d000000000000000000')]
+ ))."\r\n", [235]);
- $this->assertTrue($ntlm->authenticate($agent, $username.'@'.$domain, $secret, $this->hex2bin('30fa7e3c677bc301'), $this->hex2bin('f5ce3d2401c8f6e9')), '%s: The buffer accepted all commands authentication should succeed');
+ $this->assertTrue($ntlm->authenticate($agent, $username.'@'.$domain, $secret, hex2bin('30fa7e3c677bc301'), hex2bin('f5ce3d2401c8f6e9')), '%s: The buffer accepted all commands authentication should succeed');
}
- public function testAuthenticationFailureSendRsetAndReturnFalse()
+ /**
+ * @expectedException \Swift_TransportException
+ */
+ public function testAuthenticationFailureSendRset()
{
$domain = 'TESTNT';
$username = 'test';
$secret = 'test1234';
- $ntlm = $this->_getAuthenticator();
- $agent = $this->_getAgent();
+ $ntlm = $this->getAuthenticator();
+ $agent = $this->getAgent();
$agent->shouldReceive('executeCommand')
->once()
->with('AUTH NTLM '.base64_encode(
- $this->_invokePrivateMethod('createMessage1', $ntlm)
- )."\r\n", array(334))
+ $this->invokePrivateMethod('createMessage1', $ntlm)
+ )."\r\n", [334])
->andThrow(new Swift_TransportException(''));
$agent->shouldReceive('executeCommand')
->once()
- ->with("RSET\r\n", array(250));
+ ->with("RSET\r\n", [250]);
- $this->assertFalse($ntlm->authenticate($agent, $username.'@'.$domain, $secret, $this->hex2bin('30fa7e3c677bc301'), $this->hex2bin('f5ce3d2401c8f6e9')), '%s: Authentication fails, so RSET should be sent');
+ $ntlm->authenticate($agent, $username.'@'.$domain, $secret, hex2bin('30fa7e3c677bc301'), hex2bin('f5ce3d2401c8f6e9'));
}
- private function _getAuthenticator()
+ private function getAuthenticator()
{
return new Swift_Transport_Esmtp_Auth_NTLMAuthenticator();
}
- private function _getAgent()
+ private function getAgent()
{
return $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
}
- private function _invokePrivateMethod($method, $instance, array $args = array())
+ private function invokePrivateMethod($method, $instance, array $args = [])
{
$methodC = new ReflectionMethod($instance, trim($method));
$methodC->setAccessible(true);
return $methodC->invokeArgs($instance, $args);
}
-
- /**
- * Hex2bin replacement for < PHP 5.4.
- *
- * @param string $hex
- *
- * @return string Binary
- */
- protected function hex2bin($hex)
- {
- return function_exists('hex2bin') ? hex2bin($hex) : pack('H*', $hex);
- }
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/PlainAuthenticatorTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/PlainAuthenticatorTest.php
index 73a9062..1bb2c99 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/PlainAuthenticatorTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/Auth/PlainAuthenticatorTest.php
@@ -2,11 +2,11 @@
class Swift_Transport_Esmtp_Auth_PlainAuthenticatorTest extends \SwiftMailerTestCase
{
- private $_agent;
+ private $agent;
protected function setUp()
{
- $this->_agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
+ $this->agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
}
public function testKeywordIsPlain()
@@ -15,7 +15,7 @@ public function testKeywordIsPlain()
The name associated with this mechanism is "PLAIN".
*/
- $login = $this->_getAuthenticator();
+ $login = $this->getAuthenticator();
$this->assertEquals('PLAIN', $login->getAuthKeyword());
}
@@ -28,39 +28,40 @@ public function testSuccessfulAuthentication()
(U+0000) character, followed by the clear-text password.
*/
- $plain = $this->_getAuthenticator();
+ $plain = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
->with('AUTH PLAIN '.base64_encode(
'jack'.chr(0).'jack'.chr(0).'pass'
- )."\r\n", array(235));
+ )."\r\n", [235]);
- $this->assertTrue($plain->authenticate($this->_agent, 'jack', 'pass'),
+ $this->assertTrue($plain->authenticate($this->agent, 'jack', 'pass'),
'%s: The buffer accepted all commands authentication should succeed'
);
}
- public function testAuthenticationFailureSendRsetAndReturnFalse()
+ /**
+ * @expectedException \Swift_TransportException
+ */
+ public function testAuthenticationFailureSendRset()
{
- $plain = $this->_getAuthenticator();
+ $plain = $this->getAuthenticator();
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
->with('AUTH PLAIN '.base64_encode(
'jack'.chr(0).'jack'.chr(0).'pass'
- )."\r\n", array(235))
+ )."\r\n", [235])
->andThrow(new Swift_TransportException(''));
- $this->_agent->shouldReceive('executeCommand')
+ $this->agent->shouldReceive('executeCommand')
->once()
- ->with("RSET\r\n", array(250));
+ ->with("RSET\r\n", [250]);
- $this->assertFalse($plain->authenticate($this->_agent, 'jack', 'pass'),
- '%s: Authentication fails, so RSET should be sent'
- );
+ $plain->authenticate($this->agent, 'jack', 'pass');
}
- private function _getAuthenticator()
+ private function getAuthenticator()
{
return new Swift_Transport_Esmtp_Auth_PlainAuthenticator();
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/AuthHandlerTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/AuthHandlerTest.php
index d52328a..36a4cf8 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/AuthHandlerTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/Esmtp/AuthHandlerTest.php
@@ -2,43 +2,43 @@
class Swift_Transport_Esmtp_AuthHandlerTest extends \SwiftMailerTestCase
{
- private $_agent;
+ private $agent;
protected function setUp()
{
- $this->_agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
+ $this->agent = $this->getMockery('Swift_Transport_SmtpAgent')->shouldIgnoreMissing();
}
public function testKeywordIsAuth()
{
- $auth = $this->_createHandler(array());
+ $auth = $this->createHandler([]);
$this->assertEquals('AUTH', $auth->getHandledKeyword());
}
public function testUsernameCanBeSetAndFetched()
{
- $auth = $this->_createHandler(array());
+ $auth = $this->createHandler([]);
$auth->setUsername('jack');
$this->assertEquals('jack', $auth->getUsername());
}
public function testPasswordCanBeSetAndFetched()
{
- $auth = $this->_createHandler(array());
+ $auth = $this->createHandler([]);
$auth->setPassword('pass');
$this->assertEquals('pass', $auth->getPassword());
}
public function testAuthModeCanBeSetAndFetched()
{
- $auth = $this->_createHandler(array());
+ $auth = $this->createHandler([]);
$auth->setAuthMode('PLAIN');
$this->assertEquals('PLAIN', $auth->getAuthMode());
}
public function testMixinMethods()
{
- $auth = $this->_createHandler(array());
+ $auth = $this->createHandler([]);
$mixins = $auth->exposeMixinMethods();
$this->assertTrue(in_array('getUsername', $mixins),
'%s: getUsername() should be accessible via mixin'
@@ -62,98 +62,98 @@ public function testMixinMethods()
public function testAuthenticatorsAreCalledAccordingToParamsAfterEhlo()
{
- $a1 = $this->_createMockAuthenticator('PLAIN');
- $a2 = $this->_createMockAuthenticator('LOGIN');
+ $a1 = $this->createMockAuthenticator('PLAIN');
+ $a2 = $this->createMockAuthenticator('LOGIN');
$a1->shouldReceive('authenticate')
->never()
- ->with($this->_agent, 'jack', 'pass');
+ ->with($this->agent, 'jack', 'pass');
$a2->shouldReceive('authenticate')
->once()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(true);
- $auth = $this->_createHandler(array($a1, $a2));
+ $auth = $this->createHandler([$a1, $a2]);
$auth->setUsername('jack');
$auth->setPassword('pass');
- $auth->setKeywordParams(array('CRAM-MD5', 'LOGIN'));
- $auth->afterEhlo($this->_agent);
+ $auth->setKeywordParams(['CRAM-MD5', 'LOGIN']);
+ $auth->afterEhlo($this->agent);
}
public function testAuthenticatorsAreNotUsedIfNoUsernameSet()
{
- $a1 = $this->_createMockAuthenticator('PLAIN');
- $a2 = $this->_createMockAuthenticator('LOGIN');
+ $a1 = $this->createMockAuthenticator('PLAIN');
+ $a2 = $this->createMockAuthenticator('LOGIN');
$a1->shouldReceive('authenticate')
->never()
- ->with($this->_agent, 'jack', 'pass');
+ ->with($this->agent, 'jack', 'pass');
$a2->shouldReceive('authenticate')
->never()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(true);
- $auth = $this->_createHandler(array($a1, $a2));
+ $auth = $this->createHandler([$a1, $a2]);
- $auth->setKeywordParams(array('CRAM-MD5', 'LOGIN'));
- $auth->afterEhlo($this->_agent);
+ $auth->setKeywordParams(['CRAM-MD5', 'LOGIN']);
+ $auth->afterEhlo($this->agent);
}
public function testSeveralAuthenticatorsAreTriedIfNeeded()
{
- $a1 = $this->_createMockAuthenticator('PLAIN');
- $a2 = $this->_createMockAuthenticator('LOGIN');
+ $a1 = $this->createMockAuthenticator('PLAIN');
+ $a2 = $this->createMockAuthenticator('LOGIN');
$a1->shouldReceive('authenticate')
->once()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(false);
$a2->shouldReceive('authenticate')
->once()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(true);
- $auth = $this->_createHandler(array($a1, $a2));
+ $auth = $this->createHandler([$a1, $a2]);
$auth->setUsername('jack');
$auth->setPassword('pass');
- $auth->setKeywordParams(array('PLAIN', 'LOGIN'));
- $auth->afterEhlo($this->_agent);
+ $auth->setKeywordParams(['PLAIN', 'LOGIN']);
+ $auth->afterEhlo($this->agent);
}
public function testFirstAuthenticatorToPassBreaksChain()
{
- $a1 = $this->_createMockAuthenticator('PLAIN');
- $a2 = $this->_createMockAuthenticator('LOGIN');
- $a3 = $this->_createMockAuthenticator('CRAM-MD5');
+ $a1 = $this->createMockAuthenticator('PLAIN');
+ $a2 = $this->createMockAuthenticator('LOGIN');
+ $a3 = $this->createMockAuthenticator('CRAM-MD5');
$a1->shouldReceive('authenticate')
->once()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(false);
$a2->shouldReceive('authenticate')
->once()
- ->with($this->_agent, 'jack', 'pass')
+ ->with($this->agent, 'jack', 'pass')
->andReturn(true);
$a3->shouldReceive('authenticate')
->never()
- ->with($this->_agent, 'jack', 'pass');
+ ->with($this->agent, 'jack', 'pass');
- $auth = $this->_createHandler(array($a1, $a2));
+ $auth = $this->createHandler([$a1, $a2]);
$auth->setUsername('jack');
$auth->setPassword('pass');
- $auth->setKeywordParams(array('PLAIN', 'LOGIN', 'CRAM-MD5'));
- $auth->afterEhlo($this->_agent);
+ $auth->setKeywordParams(['PLAIN', 'LOGIN', 'CRAM-MD5']);
+ $auth->afterEhlo($this->agent);
}
- private function _createHandler($authenticators)
+ private function createHandler($authenticators)
{
return new Swift_Transport_Esmtp_AuthHandler($authenticators);
}
- private function _createMockAuthenticator($type)
+ private function createMockAuthenticator($type)
{
$authenticator = $this->getMockery('Swift_Transport_Esmtp_Authenticator')->shouldIgnoreMissing();
$authenticator->shouldReceive('getAuthKeyword')
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransport/ExtensionSupportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransport/ExtensionSupportTest.php
index 166e160..d9e363a 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransport/ExtensionSupportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransport/ExtensionSupportTest.php
@@ -13,8 +13,8 @@ class Swift_Transport_EsmtpTransport_ExtensionSupportTest extends Swift_Transpor
{
public function testExtensionHandlersAreSortedAsNeeded()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -32,16 +32,16 @@ public function testExtensionHandlersAreSortedAsNeeded()
->zeroOrMoreTimes()
->with('AUTH')
->andReturn(-1);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2));
- $this->assertEquals(array($ext2, $ext1), $smtp->getExtensionHandlers());
+ $smtp->setExtensionHandlers([$ext1, $ext2]);
+ $this->assertEquals([$ext2, $ext1], $smtp->getExtensionHandlers());
}
public function testHandlersAreNotifiedOfParams()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -71,23 +71,23 @@ public function testHandlersAreNotifiedOfParams()
->andReturn('AUTH');
$ext1->shouldReceive('setKeywordParams')
->once()
- ->with(array('PLAIN', 'LOGIN'));
+ ->with(['PLAIN', 'LOGIN']);
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('SIZE');
$ext2->shouldReceive('setKeywordParams')
->zeroOrMoreTimes()
- ->with(array('123456'));
- $this->_finishBuffer($buf);
+ ->with(['123456']);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2));
+ $smtp->setExtensionHandlers([$ext1, $ext2]);
$smtp->start();
}
public function testSupportedExtensionHandlersAreRunAfterEhlo()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -131,28 +131,28 @@ public function testSupportedExtensionHandlersAreRunAfterEhlo()
$ext3->shouldReceive('afterEhlo')
->never()
->with($smtp);
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
+ $smtp->setExtensionHandlers([$ext1, $ext2, $ext3]);
$smtp->start();
}
public function testExtensionsCanModifyMailFromParams()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher();
- $smtp = new Swift_Transport_EsmtpTransport($buf, array(), $dispatcher);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher();
+ $smtp = new Swift_Transport_EsmtpTransport($buf, [], $dispatcher, 'example.org');
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain' => 'Me'));
+ ->andReturn(['me@domain' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('readLine')
->once()
@@ -190,7 +190,7 @@ public function testExtensionsCanModifyMailFromParams()
->once()
->with(3)
->andReturn("250 OK\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$ext1->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
@@ -200,7 +200,11 @@ public function testExtensionsCanModifyMailFromParams()
->andReturn('FOO');
$ext1->shouldReceive('getPriorityOver')
->zeroOrMoreTimes()
- ->with('AUTH')
+ ->with('STARTTLS')
+ ->andReturn(1);
+ $ext1->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('SIZE')
->andReturn(-1);
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
@@ -212,33 +216,45 @@ public function testExtensionsCanModifyMailFromParams()
->zeroOrMoreTimes()
->with('AUTH')
->andReturn(1);
+ $ext2->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('STARTTLS')
+ ->andReturn(1);
$ext3->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('STARTTLS');
$ext3->shouldReceive('getMailParams')
->never();
+ $ext3->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('AUTH')
+ ->andReturn(-1);
+ $ext3->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('SIZE')
+ ->andReturn(-1);
- $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
+ $smtp->setExtensionHandlers([$ext1, $ext2, $ext3]);
$smtp->start();
$smtp->send($message);
}
public function testExtensionsCanModifyRcptParams()
{
- $buf = $this->_getBuffer();
- $dispatcher = $this->_createEventDispatcher();
- $smtp = new Swift_Transport_EsmtpTransport($buf, array(), $dispatcher);
+ $buf = $this->getBuffer();
+ $dispatcher = $this->createEventDispatcher();
+ $smtp = new Swift_Transport_EsmtpTransport($buf, [], $dispatcher, 'example.org');
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
- $message = $this->_createMessage();
+ $message = $this->createMessage();
$message->shouldReceive('getFrom')
->zeroOrMoreTimes()
- ->andReturn(array('me@domain' => 'Me'));
+ ->andReturn(['me@domain' => 'Me']);
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null));
+ ->andReturn(['foo@bar' => null]);
$buf->shouldReceive('readLine')
->once()
@@ -276,7 +292,7 @@ public function testExtensionsCanModifyRcptParams()
->once()
->with(3)
->andReturn("250 OK\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$ext1->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
@@ -286,7 +302,11 @@ public function testExtensionsCanModifyRcptParams()
->andReturn('FOO');
$ext1->shouldReceive('getPriorityOver')
->zeroOrMoreTimes()
- ->with('AUTH')
+ ->with('STARTTLS')
+ ->andReturn(1);
+ $ext1->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('SIZE')
->andReturn(-1);
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
@@ -294,6 +314,10 @@ public function testExtensionsCanModifyRcptParams()
$ext2->shouldReceive('getRcptParams')
->once()
->andReturn('ZIP');
+ $ext2->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('STARTTLS')
+ ->andReturn(1);
$ext2->shouldReceive('getPriorityOver')
->zeroOrMoreTimes()
->with('AUTH')
@@ -303,16 +327,24 @@ public function testExtensionsCanModifyRcptParams()
->andReturn('STARTTLS');
$ext3->shouldReceive('getRcptParams')
->never();
+ $ext3->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('AUTH')
+ ->andReturn(-1);
+ $ext3->shouldReceive('getPriorityOver')
+ ->zeroOrMoreTimes()
+ ->with('SIZE')
+ ->andReturn(-1);
- $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
+ $smtp->setExtensionHandlers([$ext1, $ext2, $ext3]);
$smtp->start();
$smtp->send($message);
}
public function testExtensionsAreNotifiedOnCommand()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -345,20 +377,20 @@ public function testExtensionsAreNotifiedOnCommand()
->once()
->with(2)
->andReturn("250 Cool\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$ext1->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('AUTH');
$ext1->shouldReceive('onCommand')
->once()
- ->with($smtp, "FOO\r\n", array(250, 251), \Mockery::any(), \Mockery::any());
+ ->with($smtp, "FOO\r\n", [250, 251], \Mockery::any(), \Mockery::any());
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('SIZE');
$ext2->shouldReceive('onCommand')
->once()
- ->with($smtp, "FOO\r\n", array(250, 251), \Mockery::any(), \Mockery::any());
+ ->with($smtp, "FOO\r\n", [250, 251], \Mockery::any(), \Mockery::any());
$ext3->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('STARTTLS');
@@ -366,15 +398,15 @@ public function testExtensionsAreNotifiedOnCommand()
->never()
->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
- $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
+ $smtp->setExtensionHandlers([$ext1, $ext2, $ext3]);
$smtp->start();
- $smtp->executeCommand("FOO\r\n", array(250, 251));
+ $smtp->executeCommand("FOO\r\n", [250, 251]);
}
public function testChainOfCommandAlgorithmWhenNotifyingExtensions()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
$ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -402,14 +434,14 @@ public function testChainOfCommandAlgorithmWhenNotifyingExtensions()
$buf->shouldReceive('write')
->never()
->with("FOO\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$ext1->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('AUTH');
$ext1->shouldReceive('onCommand')
->once()
- ->with($smtp, "FOO\r\n", array(250, 251), \Mockery::any(), \Mockery::any())
+ ->with($smtp, "FOO\r\n", [250, 251], \Mockery::any(), \Mockery::any())
->andReturnUsing(function ($a, $b, $c, $d, &$e) {
$e = true;
@@ -429,15 +461,15 @@ public function testChainOfCommandAlgorithmWhenNotifyingExtensions()
->never()
->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
- $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
+ $smtp->setExtensionHandlers([$ext1, $ext2, $ext3]);
$smtp->start();
- $smtp->executeCommand("FOO\r\n", array(250, 251));
+ $smtp->executeCommand("FOO\r\n", [250, 251]);
}
public function testExtensionsCanExposeMixinMethods()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandlerMixin')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -446,7 +478,7 @@ public function testExtensionsCanExposeMixinMethods()
->andReturn('AUTH');
$ext1->shouldReceive('exposeMixinMethods')
->zeroOrMoreTimes()
- ->andReturn(array('setUsername', 'setPassword'));
+ ->andReturn(['setUsername', 'setPassword']);
$ext1->shouldReceive('setUsername')
->once()
->with('mick');
@@ -456,17 +488,17 @@ public function testExtensionsCanExposeMixinMethods()
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('STARTTLS');
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2));
+ $smtp->setExtensionHandlers([$ext1, $ext2]);
$smtp->setUsername('mick');
$smtp->setPassword('pass');
}
public function testMixinMethodsBeginningWithSetAndNullReturnAreFluid()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandlerMixin')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -475,7 +507,7 @@ public function testMixinMethodsBeginningWithSetAndNullReturnAreFluid()
->andReturn('AUTH');
$ext1->shouldReceive('exposeMixinMethods')
->zeroOrMoreTimes()
- ->andReturn(array('setUsername', 'setPassword'));
+ ->andReturn(['setUsername', 'setPassword']);
$ext1->shouldReceive('setUsername')
->once()
->with('mick')
@@ -487,9 +519,9 @@ public function testMixinMethodsBeginningWithSetAndNullReturnAreFluid()
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('STARTTLS');
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2));
+ $smtp->setExtensionHandlers([$ext1, $ext2]);
$ret = $smtp->setUsername('mick');
$this->assertEquals($smtp, $ret);
$ret = $smtp->setPassword('pass');
@@ -498,8 +530,8 @@ public function testMixinMethodsBeginningWithSetAndNullReturnAreFluid()
public function testMixinSetterWhichReturnValuesAreNotFluid()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$ext1 = $this->getMockery('Swift_Transport_EsmtpHandlerMixin')->shouldIgnoreMissing();
$ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
@@ -508,7 +540,7 @@ public function testMixinSetterWhichReturnValuesAreNotFluid()
->andReturn('AUTH');
$ext1->shouldReceive('exposeMixinMethods')
->zeroOrMoreTimes()
- ->andReturn(array('setUsername', 'setPassword'));
+ ->andReturn(['setUsername', 'setPassword']);
$ext1->shouldReceive('setUsername')
->once()
->with('mick')
@@ -520,9 +552,9 @@ public function testMixinSetterWhichReturnValuesAreNotFluid()
$ext2->shouldReceive('getHandledKeyword')
->zeroOrMoreTimes()
->andReturn('STARTTLS');
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
- $smtp->setExtensionHandlers(array($ext1, $ext2));
+ $smtp->setExtensionHandlers([$ext1, $ext2]);
$this->assertEquals('x', $smtp->setUsername('mick'));
$this->assertEquals('x', $smtp->setPassword('pass'));
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransportTest.php
index e6cca15..db1edce 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/EsmtpTransportTest.php
@@ -2,54 +2,54 @@
class Swift_Transport_EsmtpTransportTest extends Swift_Transport_AbstractSmtpEventSupportTest
{
- protected function _getTransport($buf, $dispatcher = null)
+ protected function getTransport($buf, $dispatcher = null, $addressEncoder = null)
{
- if (!$dispatcher) {
- $dispatcher = $this->_createEventDispatcher();
- }
+ $dispatcher = $dispatcher ?? $this->createEventDispatcher();
+ $addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
- return new Swift_Transport_EsmtpTransport($buf, array(), $dispatcher);
+ return new Swift_Transport_EsmtpTransport($buf, [], $dispatcher, 'example.org', $addressEncoder);
}
public function testHostCanBeSetAndFetched()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$smtp->setHost('foo');
$this->assertEquals('foo', $smtp->getHost(), '%s: Host should be returned');
}
public function testPortCanBeSetAndFetched()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$smtp->setPort(25);
$this->assertEquals(25, $smtp->getPort(), '%s: Port should be returned');
}
public function testTimeoutCanBeSetAndFetched()
{
- $buf = $this->_getBuffer();
+ $buf = $this->getBuffer();
$buf->shouldReceive('setParam')
->once()
->with('timeout', 10);
- $smtp = $this->_getTransport($buf);
+ $smtp = $this->getTransport($buf);
$smtp->setTimeout(10);
$this->assertEquals(10, $smtp->getTimeout(), '%s: Timeout should be returned');
}
public function testEncryptionCanBeSetAndFetched()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$smtp->setEncryption('tls');
$this->assertEquals('tls', $smtp->getEncryption(), '%s: Crypto should be returned');
}
public function testStartSendsHeloToInitiate()
{
- //Overridden for EHLO instead
+ // previous loop would fail if there is an issue
+ $this->addToAssertionCount(1);
}
public function testStartSendsEhloToInitiate()
@@ -88,8 +88,8 @@ public function testStartSendsEhloToInitiate()
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -106,11 +106,11 @@ public function testStartSendsEhloToInitiate()
->with(1)
->andReturn('250 ServerName'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
} catch (Exception $e) {
- $this->fail('Starting Esmtp should send EHLO and accept 250 response');
+ $this->fail('Starting Esmtp should send EHLO and accept 250 response: '.$e->getMessage());
}
}
@@ -124,8 +124,8 @@ public function testHeloIsUsedAsFallback()
that it was in before the EHLO was received.
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -150,7 +150,7 @@ public function testHeloIsUsedAsFallback()
->with(2)
->andReturn('250 HELO'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$smtp->start();
} catch (Exception $e) {
@@ -163,8 +163,8 @@ public function testHeloIsUsedAsFallback()
public function testInvalidHeloResponseCausesException()
{
//Overridden to first try EHLO
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
@@ -188,7 +188,7 @@ public function testInvalidHeloResponseCausesException()
->once()
->with(2)
->andReturn('504 WTF'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
try {
$this->assertFalse($smtp->isStarted(), '%s: SMTP should begin non-started');
@@ -212,8 +212,8 @@ public function testDomainNameIsPlacedInEhlo()
identifying the client.
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('readLine')
@@ -229,7 +229,7 @@ public function testDomainNameIsPlacedInEhlo()
->with(1)
->andReturn('250 ServerName'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->setLocalDomain('mydomain.com');
$smtp->start();
}
@@ -248,8 +248,8 @@ public function testDomainNameIsPlacedInHelo()
identifying the client.
*/
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('initialize')
->once();
$buf->shouldReceive('readLine')
@@ -273,15 +273,368 @@ public function testDomainNameIsPlacedInHelo()
->with(2)
->andReturn('250 ServerName'."\r\n");
- $this->_finishBuffer($buf);
+ $this->finishBuffer($buf);
$smtp->setLocalDomain('mydomain.com');
$smtp->start();
}
+ public function testPipelining()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $this->assertNull($smtp->getPipelining());
+
+ $message = $this->createMessage();
+ $message->shouldReceive('getFrom')
+ ->zeroOrMoreTimes()
+ ->andReturn(['me@domain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->zeroOrMoreTimes()
+ ->andReturn(['foo@bar' => null]);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^EHLO .+?\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250-ServerName'."\r\n");
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 PIPELINING'."\r\n");
+
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(2);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("DATA\r\n")->andReturn(3);
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(1)->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(2)->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(3)->andReturn("354 OK\r\n");
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $sent = $smtp->send($message, $failedRecipients);
+
+ $this->assertEquals(1, $sent);
+ $this->assertEmpty($failedRecipients);
+
+ $this->assertTrue($smtp->getPipelining());
+ }
+
+ public function testPipeliningWithRecipientFailure()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $this->assertNull($smtp->getPipelining());
+
+ $message = $this->createMessage();
+ $message->shouldReceive('getFrom')
+ ->zeroOrMoreTimes()
+ ->andReturn(['me@domain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->zeroOrMoreTimes()
+ ->andReturn([
+ 'good@foo' => null,
+ 'bad@foo' => null,
+ 'good@bar' => null,
+ ]);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^EHLO .+?\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250-ServerName'."\r\n");
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 PIPELINING'."\r\n");
+
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(2);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(3);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(4);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("DATA\r\n")
+ ->andReturn(5);
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(1)
+ ->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(2)
+ ->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(3)
+ ->andReturn("450 Unknown address bad@foo\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(4)
+ ->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(5)
+ ->andReturn("354 OK\r\n");
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $sent = $smtp->send($message, $failedRecipients);
+
+ $this->assertEquals(2, $sent);
+ $this->assertEquals(['bad@foo'], $failedRecipients);
+
+ $this->assertTrue($smtp->getPipelining());
+ }
+
+ public function testPipeliningWithSenderFailure()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $this->assertNull($smtp->getPipelining());
+
+ $message = $this->createMessage();
+ $message->shouldReceive('getFrom')
+ ->zeroOrMoreTimes()
+ ->andReturn(['me@domain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->zeroOrMoreTimes()
+ ->andReturn(['foo@bar' => null]);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^EHLO .+?\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250-ServerName'."\r\n");
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 PIPELINING'."\r\n");
+
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(2);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("DATA\r\n")->andReturn(3);
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(1)
+ ->andReturn("550 Unknown address me@domain.com\r\n");
+
+ $smtp->start();
+
+ $this->expectException('Swift_TransportException');
+ $this->expectExceptionMessage('Expected response code 250 but got code "550"');
+ $smtp->send($message, $failedRecipients);
+ }
+
+ public function testPipeliningWithDataFailure()
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $this->assertNull($smtp->getPipelining());
+
+ $message = $this->createMessage();
+ $message->shouldReceive('getFrom')
+ ->zeroOrMoreTimes()
+ ->andReturn(['me@domain.com' => 'Me']);
+ $message->shouldReceive('getTo')
+ ->zeroOrMoreTimes()
+ ->andReturn(['foo@bar' => null]);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^EHLO .+?\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250-ServerName'."\r\n");
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 PIPELINING'."\r\n");
+
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("MAIL FROM:\r\n")
+ ->andReturn(1);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("RCPT TO:\r\n")
+ ->andReturn(2);
+ $buf->shouldReceive('write')
+ ->ordered()
+ ->once()
+ ->with("DATA\r\n")->andReturn(3);
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(1)
+ ->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(2)
+ ->andReturn("250 OK\r\n");
+ $buf->shouldReceive('readLine')
+ ->ordered()
+ ->once()
+ ->with(3)
+ ->andReturn("452 Insufficient system storage\r\n");
+
+ $smtp->start();
+
+ $this->expectException('Swift_TransportException');
+ $this->expectExceptionMessage('Expected response code 354 but got code "452"');
+ $smtp->send($message, $failedRecipients);
+ }
+
+ public function providerPipeliningOverride()
+ {
+ return [
+ [null, true, true],
+ [null, false, false],
+ [true, false, true],
+ [true, true, true],
+ [false, false, false],
+ [false, true, false],
+ ];
+ }
+
+ /**
+ * @dataProvider providerPipeliningOverride
+ */
+ public function testPipeliningOverride($enabled, bool $supported, bool $expected)
+ {
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
+ $this->assertNull($smtp->getPipelining());
+
+ $smtp->setPipelining($enabled);
+ $this->assertSame($enabled, $smtp->getPipelining());
+
+ $message = $this->createMessage();
+ $message->shouldReceive('getFrom')
+ ->zeroOrMoreTimes()
+ ->andReturn(['me@domain.com' => 'Me']);
+
+ $buf->shouldReceive('initialize')
+ ->once();
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(0)
+ ->andReturn("220 some.server.tld bleh\r\n");
+ $buf->shouldReceive('write')
+ ->once()
+ ->with('~^EHLO .+?\r\n$~D')
+ ->andReturn(1);
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250-ServerName'."\r\n");
+ $buf->shouldReceive('readLine')
+ ->once()
+ ->with(1)
+ ->andReturn('250 '.($supported ? 'PIPELINING' : 'FOOBAR')."\r\n");
+
+ $this->finishBuffer($buf);
+ $smtp->start();
+ $smtp->send($message);
+
+ $this->assertSame($expected, $smtp->getPipelining());
+ }
+
public function testFluidInterface()
{
- $buf = $this->_getBuffer();
- $smtp = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $smtp = $this->getTransport($buf);
$buf->shouldReceive('setParam')
->once()
->with('timeout', 30);
@@ -291,6 +644,7 @@ public function testFluidInterface()
->setPort(25)
->setEncryption('tls')
->setTimeout(30)
+ ->setPipelining(false)
;
$this->assertEquals($ref, $smtp);
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/FailoverTransportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/FailoverTransportTest.php
index e56e37f..deb0617 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/FailoverTransportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/FailoverTransportTest.php
@@ -4,8 +4,8 @@ class Swift_Transport_FailoverTransportTest extends \SwiftMailerTestCase
{
public function testFirstTransportIsUsed()
{
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState = false;
@@ -33,7 +33,7 @@ public function testFirstTransportIsUsed()
$t2->shouldReceive('start')->never();
$t2->shouldReceive('send')->never();
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message1));
$this->assertEquals(1, $transport->send($message2));
@@ -43,7 +43,7 @@ public function testMessageCanBeTriedOnNextTransportIfExceptionThrown()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -91,14 +91,14 @@ public function testMessageCanBeTriedOnNextTransportIfExceptionThrown()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message));
}
public function testZeroIsReturnedIfTransportReturnsZero()
{
- $message = $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
+ $message = $this->getMockery('Swift_Mime_SimpleMessage')->shouldIgnoreMissing();
$t1 = $this->getMockery('Swift_Transport')->shouldIgnoreMissing();
$connectionState = false;
@@ -126,7 +126,7 @@ public function testZeroIsReturnedIfTransportReturnsZero()
return 0;
});
- $transport = $this->_getTransport(array($t1));
+ $transport = $this->getTransport([$t1]);
$transport->start();
$this->assertEquals(0, $transport->send($message));
}
@@ -135,10 +135,10 @@ public function testTransportsWhichThrowExceptionsAreNotRetried()
{
$e = new Swift_TransportException('maur b0rken');
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
- $message3 = $this->getMockery('Swift_Mime_Message');
- $message4 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message3 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message4 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -195,7 +195,7 @@ public function testTransportsWhichThrowExceptionsAreNotRetried()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message1));
$this->assertEquals(1, $transport->send($message2));
@@ -207,7 +207,7 @@ public function testExceptionIsThrownIfAllTransportsDie()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -255,7 +255,7 @@ public function testExceptionIsThrownIfAllTransportsDie()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
try {
$transport->send($message);
@@ -298,7 +298,7 @@ public function testStoppingTransportStopsAllDelegates()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$transport->stop();
}
@@ -307,7 +307,7 @@ public function testTransportShowsAsNotStartedIfAllDelegatesDead()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
@@ -358,7 +358,7 @@ public function testTransportShowsAsNotStartedIfAllDelegatesDead()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertTrue($transport->isStarted());
try {
@@ -373,8 +373,8 @@ public function testRestartingTransportRestartsDeadDelegates()
{
$e = new Swift_TransportException('b0rken');
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
@@ -436,7 +436,7 @@ public function testRestartingTransportRestartsDeadDelegates()
->never()
->with($message2, \Mockery::any());
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertTrue($transport->isStarted());
try {
@@ -453,9 +453,9 @@ public function testRestartingTransportRestartsDeadDelegates()
public function testFailureReferenceIsPassedToDelegates()
{
- $failures = array();
+ $failures = [];
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$connectionState = false;
@@ -481,14 +481,14 @@ public function testFailureReferenceIsPassedToDelegates()
}
});
- $transport = $this->_getTransport(array($t1));
+ $transport = $this->getTransport([$t1]);
$transport->start();
$transport->send($message, $failures);
}
public function testRegisterPluginDelegatesToLoadedTransports()
{
- $plugin = $this->_createPlugin();
+ $plugin = $this->createPlugin();
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
@@ -499,11 +499,93 @@ public function testRegisterPluginDelegatesToLoadedTransports()
->once()
->with($plugin);
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->registerPlugin($plugin);
}
- private function _getTransport(array $transports)
+ public function testEachDelegateIsPinged()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+ $connectionState1 = false;
+ $connectionState2 = false;
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->once()
+ ->andReturn(true);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertTrue($transport->isStarted());
+ $this->assertTrue($transport->ping());
+ }
+
+ public function testDelegateIsKilledWhenPingFails()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $t2->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState2) {
+ return $connectionState2;
+ });
+ $t2->shouldReceive('ping')
+ ->twice()
+ ->andReturn(true);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertTrue($transport->ping());
+ $this->assertTrue($transport->ping());
+ $this->assertTrue($transport->isStarted());
+ }
+
+ public function XtestTransportShowsAsNotStartedIfAllPingFails()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $t2->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState2) {
+ return $connectionState2;
+ });
+ $t2->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertFalse($transport->ping());
+ $this->assertFalse($transport->isStarted());
+ $this->assertFalse($transport->ping());
+ }
+
+ private function getTransport(array $transports)
{
$transport = new Swift_Transport_FailoverTransport();
$transport->setTransports($transports);
@@ -511,7 +593,7 @@ private function _getTransport(array $transports)
return $transport;
}
- private function _createPlugin()
+ private function createPlugin()
{
return $this->getMockery('Swift_Events_EventListener');
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/LoadBalancedTransportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/LoadBalancedTransportTest.php
index f6bb819..dbc60af 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/LoadBalancedTransportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/LoadBalancedTransportTest.php
@@ -4,8 +4,8 @@ class Swift_Transport_LoadBalancedTransportTest extends \SwiftMailerTestCase
{
public function testEachTransportIsUsedInTurn()
{
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -62,7 +62,7 @@ public function testEachTransportIsUsedInTurn()
->never()
->with($message1, \Mockery::any());
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message1));
$this->assertEquals(1, $transport->send($message2));
@@ -70,10 +70,10 @@ public function testEachTransportIsUsedInTurn()
public function testTransportsAreReusedInRotatingFashion()
{
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
- $message3 = $this->getMockery('Swift_Mime_Message');
- $message4 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message3 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message4 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -154,7 +154,7 @@ public function testTransportsAreReusedInRotatingFashion()
->never()
->with($message3, \Mockery::any());
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message1));
@@ -167,7 +167,7 @@ public function testMessageCanBeTriedOnNextTransportIfExceptionThrown()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -218,14 +218,14 @@ public function testMessageCanBeTriedOnNextTransportIfExceptionThrown()
$testCase->fail();
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message));
}
public function testMessageIsTriedOnNextTransportIfZeroReturned()
{
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -277,14 +277,14 @@ public function testMessageIsTriedOnNextTransportIfZeroReturned()
return 0;
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message));
}
public function testZeroIsReturnedIfAllTransportsReturnZero()
{
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -336,7 +336,7 @@ public function testZeroIsReturnedIfAllTransportsReturnZero()
return 1;
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(0, $transport->send($message));
}
@@ -345,10 +345,10 @@ public function testTransportsWhichThrowExceptionsAreNotRetried()
{
$e = new Swift_TransportException('maur b0rken');
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
- $message3 = $this->getMockery('Swift_Mime_Message');
- $message4 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message3 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message4 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -408,7 +408,7 @@ public function testTransportsWhichThrowExceptionsAreNotRetried()
$testCase->fail();
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertEquals(1, $transport->send($message1));
$this->assertEquals(1, $transport->send($message2));
@@ -420,7 +420,7 @@ public function testExceptionIsThrownIfAllTransportsDie()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -468,7 +468,7 @@ public function testExceptionIsThrownIfAllTransportsDie()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
try {
$transport->send($message);
@@ -510,7 +510,7 @@ public function testStoppingTransportStopsAllDelegates()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$transport->stop();
}
@@ -519,7 +519,7 @@ public function testTransportShowsAsNotStartedIfAllDelegatesDead()
{
$e = new Swift_TransportException('b0rken');
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -567,7 +567,7 @@ public function testTransportShowsAsNotStartedIfAllDelegatesDead()
}
});
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertTrue($transport->isStarted());
try {
@@ -582,8 +582,8 @@ public function testRestartingTransportRestartsDeadDelegates()
{
$e = new Swift_TransportException('b0rken');
- $message1 = $this->getMockery('Swift_Mime_Message');
- $message2 = $this->getMockery('Swift_Mime_Message');
+ $message1 = $this->getMockery('Swift_Mime_SimpleMessage');
+ $message2 = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
$connectionState1 = false;
@@ -643,7 +643,7 @@ public function testRestartingTransportRestartsDeadDelegates()
->never()
->with($message2, \Mockery::any());
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->start();
$this->assertTrue($transport->isStarted());
try {
@@ -660,10 +660,10 @@ public function testRestartingTransportRestartsDeadDelegates()
public function testFailureReferenceIsPassedToDelegates()
{
- $failures = array();
+ $failures = [];
$testCase = $this;
- $message = $this->getMockery('Swift_Mime_Message');
+ $message = $this->getMockery('Swift_Mime_SimpleMessage');
$t1 = $this->getMockery('Swift_Transport');
$connectionState = false;
@@ -690,14 +690,14 @@ public function testFailureReferenceIsPassedToDelegates()
}
});
- $transport = $this->_getTransport(array($t1));
+ $transport = $this->getTransport([$t1]);
$transport->start();
$transport->send($message, $failures);
}
public function testRegisterPluginDelegatesToLoadedTransports()
{
- $plugin = $this->_createPlugin();
+ $plugin = $this->createPlugin();
$t1 = $this->getMockery('Swift_Transport');
$t2 = $this->getMockery('Swift_Transport');
@@ -709,10 +709,99 @@ public function testRegisterPluginDelegatesToLoadedTransports()
->once()
->with($plugin);
- $transport = $this->_getTransport(array($t1, $t2));
+ $transport = $this->getTransport([$t1, $t2]);
$transport->registerPlugin($plugin);
}
+ public function testEachDelegateIsPinged()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->once()
+ ->andReturn(true);
+
+ $t2->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState2) {
+ return $connectionState2;
+ });
+ $t2->shouldReceive('ping')
+ ->once()
+ ->andReturn(true);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertTrue($transport->isStarted());
+ $this->assertTrue($transport->ping());
+ }
+
+ public function testDelegateIsKilledWhenPingFails()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->twice()
+ ->andReturn(true);
+
+ $t2->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState2) {
+ return $connectionState2;
+ });
+ $t2->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertTrue($transport->ping());
+ $this->assertTrue($transport->ping());
+ $this->assertTrue($transport->isStarted());
+ }
+
+ public function testTransportShowsAsNotStartedIfAllPingFails()
+ {
+ $t1 = $this->getMockery('Swift_Transport');
+ $t2 = $this->getMockery('Swift_Transport');
+
+ $testCase = $this;
+ $t1->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState1) {
+ return $connectionState1;
+ });
+ $t1->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $t2->shouldReceive('isStarted')
+ ->zeroOrMoreTimes()
+ ->andReturnUsing(function () use (&$connectionState2) {
+ return $connectionState2;
+ });
+ $t2->shouldReceive('ping')
+ ->once()
+ ->andReturn(false);
+
+ $transport = $this->getTransport([$t1, $t2]);
+ $this->assertFalse($transport->ping());
+ $this->assertFalse($transport->isStarted());
+ $this->assertFalse($transport->ping());
+ }
+
/**
* Adapted from Yay_Matchers_ReferenceMatcher.
*/
@@ -726,7 +815,7 @@ public function varsAreReferences(&$ref1, &$ref2)
}
$copy = $ref2;
- $randomString = uniqid('yay');
+ $randomString = uniqid('yay', true);
$ref2 = $randomString;
$isRef = ($ref1 === $ref2);
$ref2 = $copy;
@@ -734,7 +823,7 @@ public function varsAreReferences(&$ref1, &$ref2)
return $isRef;
}
- private function _getTransport(array $transports)
+ private function getTransport(array $transports)
{
$transport = new Swift_Transport_LoadBalancedTransport();
$transport->setTransports($transports);
@@ -742,7 +831,7 @@ private function _getTransport(array $transports)
return $transport;
}
- private function _createPlugin()
+ private function createPlugin()
{
return $this->getMockery('Swift_Events_EventListener');
}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/MailTransportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/MailTransportTest.php
deleted file mode 100644
index 6672a3d..0000000
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/MailTransportTest.php
+++ /dev/null
@@ -1,533 +0,0 @@
-_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $invoker->shouldReceive('mail')
- ->once();
-
- $transport->send($message);
- }
-
- public function testTransportUsesToFieldBodyInSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $to = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'To' => $to,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $to->shouldReceive('getFieldBody')
- ->zeroOrMoreTimes()
- ->andReturn('Foo ');
- $invoker->shouldReceive('mail')
- ->once()
- ->with('Foo ', \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testTransportUsesSubjectFieldBodyInSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $subj = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'Subject' => $subj,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $subj->shouldReceive('getFieldBody')
- ->zeroOrMoreTimes()
- ->andReturn('Thing');
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), 'Thing', \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testTransportUsesBodyOfMessage()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('toString')
- ->zeroOrMoreTimes()
- ->andReturn(
- "To: Foo \r\n".
- "\r\n".
- 'This body'
- );
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), 'This body', \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testTransportSettingUsingReturnPathForExtraParams()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('getReturnPath')
- ->zeroOrMoreTimes()
- ->andReturn(
- 'foo@bar'
- );
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), '-ffoo@bar');
-
- $transport->send($message);
- }
-
- public function testTransportSettingEmptyExtraParams()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('getReturnPath')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $message->shouldReceive('getSender')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $message->shouldReceive('getFrom')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), null);
-
- $transport->send($message);
- }
-
- public function testTransportSettingSettingExtraParamsWithF()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
- $transport->setExtraParams('-x\'foo\' -f%s');
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('getReturnPath')
- ->zeroOrMoreTimes()
- ->andReturn(
- 'foo@bar'
- );
- $message->shouldReceive('getSender')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $message->shouldReceive('getFrom')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), '-x\'foo\' -ffoo@bar');
-
- $transport->send($message);
- }
-
- public function testTransportSettingSettingExtraParamsWithoutF()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
- $transport->setExtraParams('-x\'foo\'');
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('getReturnPath')
- ->zeroOrMoreTimes()
- ->andReturn(
- 'foo@bar'
- );
- $message->shouldReceive('getSender')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $message->shouldReceive('getFrom')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), '-x\'foo\'');
-
- $transport->send($message);
- }
-
- public function testTransportSettingInvalidFromEmail()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('getReturnPath')
- ->zeroOrMoreTimes()
- ->andReturn(
- '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php "@email.com'
- );
- $message->shouldReceive('getSender')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $message->shouldReceive('getFrom')
- ->zeroOrMoreTimes()
- ->andReturn(null);
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), null);
-
- $transport->send($message);
- }
-
- public function testTransportUsesHeadersFromMessage()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessageWithRecipient($headers);
-
- $message->shouldReceive('toString')
- ->zeroOrMoreTimes()
- ->andReturn(
- "Subject: Stuff\r\n".
- "\r\n".
- 'This body'
- );
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), 'Subject: Stuff'.PHP_EOL, \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testTransportReturnsCountOfAllRecipientsIfInvokerReturnsTrue()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessage($headers);
-
- $message->shouldReceive('getTo')
- ->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null, 'zip@button' => null));
- $message->shouldReceive('getCc')
- ->zeroOrMoreTimes()
- ->andReturn(array('test@test' => null));
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any())
- ->andReturn(true);
-
- $this->assertEquals(3, $transport->send($message));
- }
-
- public function testTransportReturnsZeroIfInvokerReturnsFalse()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessage($headers);
-
- $message->shouldReceive('getTo')
- ->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => null, 'zip@button' => null));
- $message->shouldReceive('getCc')
- ->zeroOrMoreTimes()
- ->andReturn(array('test@test' => null));
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any())
- ->andReturn(false);
-
- $this->assertEquals(0, $transport->send($message));
- }
-
- public function testToHeaderIsRemovedFromHeaderSetDuringSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $to = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'To' => $to,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $headers->shouldReceive('remove')
- ->once()
- ->with('To');
- $headers->shouldReceive('remove')
- ->zeroOrMoreTimes();
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testSubjectHeaderIsRemovedFromHeaderSetDuringSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $subject = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'Subject' => $subject,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $headers->shouldReceive('remove')
- ->once()
- ->with('Subject');
- $headers->shouldReceive('remove')
- ->zeroOrMoreTimes();
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testToHeaderIsPutBackAfterSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $to = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'To' => $to,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $headers->shouldReceive('set')
- ->once()
- ->with($to);
- $headers->shouldReceive('set')
- ->zeroOrMoreTimes();
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testSubjectHeaderIsPutBackAfterSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $subject = $this->_createHeader();
- $headers = $this->_createHeaders(array(
- 'Subject' => $subject,
- ));
- $message = $this->_createMessageWithRecipient($headers);
-
- $headers->shouldReceive('set')
- ->once()
- ->with($subject);
- $headers->shouldReceive('set')
- ->zeroOrMoreTimes();
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any(), \Mockery::any());
-
- $transport->send($message);
- }
-
- public function testMessageHeadersOnlyHavePHPEolsDuringSending()
- {
- $invoker = $this->_createInvoker();
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $subject = $this->_createHeader();
- $subject->shouldReceive('getFieldBody')->andReturn("Foo\r\nBar");
-
- $headers = $this->_createHeaders(array(
- 'Subject' => $subject,
- ));
- $message = $this->_createMessageWithRecipient($headers);
- $message->shouldReceive('toString')
- ->zeroOrMoreTimes()
- ->andReturn(
- "From: Foo\r\n\r\n".
- "\r\n".
- "This\r\n".
- 'body'
- );
-
- if ("\r\n" != PHP_EOL) {
- $expectedHeaders = "From: Foo\n\n";
- $expectedSubject = "Foo\nBar";
- $expectedBody = "This\nbody";
- } else {
- $expectedHeaders = "From: Foo\r\n\r\n";
- $expectedSubject = "Foo\r\nBar";
- $expectedBody = "This\r\nbody";
- }
-
- $invoker->shouldReceive('mail')
- ->once()
- ->with(\Mockery::any(), $expectedSubject, $expectedBody, $expectedHeaders, \Mockery::any());
-
- $transport->send($message);
- }
-
- /**
- * @expectedException \Swift_TransportException
- * @expectedExceptionMessage Cannot send message without a recipient
- */
- public function testExceptionWhenNoRecipients()
- {
- $invoker = $this->_createInvoker();
- $invoker->shouldReceive('mail');
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessage($headers);
-
- $transport->send($message);
- }
-
- public function noExceptionWhenRecipientsExistProvider()
- {
- return array(
- array('To'),
- array('Cc'),
- array('Bcc'),
- );
- }
-
- /**
- * @dataProvider noExceptionWhenRecipientsExistProvider
- *
- * @param string $header
- */
- public function testNoExceptionWhenRecipientsExist($header)
- {
- $invoker = $this->_createInvoker();
- $invoker->shouldReceive('mail');
- $dispatcher = $this->_createEventDispatcher();
- $transport = $this->_createTransport($invoker, $dispatcher);
-
- $headers = $this->_createHeaders();
- $message = $this->_createMessage($headers);
- $message->shouldReceive(sprintf('get%s', $header))->andReturn(array('foo@bar' => 'Foo'));
-
- $transport->send($message);
- }
-
- private function _createTransport($invoker, $dispatcher)
- {
- return new Swift_Transport_MailTransport($invoker, $dispatcher);
- }
-
- private function _createEventDispatcher()
- {
- return $this->getMockery('Swift_Events_EventDispatcher')->shouldIgnoreMissing();
- }
-
- private function _createInvoker()
- {
- return $this->getMockery('Swift_Transport_MailInvoker');
- }
-
- private function _createMessage($headers)
- {
- $message = $this->getMockery('Swift_Mime_Message')->shouldIgnoreMissing();
- $message->shouldReceive('getHeaders')
- ->zeroOrMoreTimes()
- ->andReturn($headers);
-
- return $message;
- }
-
- private function _createMessageWithRecipient($headers, $recipient = array('foo@bar' => 'Foo'))
- {
- $message = $this->_createMessage($headers);
- $message->shouldReceive('getTo')->andReturn($recipient);
-
- return $message;
- }
-
- private function _createHeaders($headers = array())
- {
- $set = $this->getMockery('Swift_Mime_HeaderSet')->shouldIgnoreMissing();
-
- if (count($headers) > 0) {
- foreach ($headers as $name => $header) {
- $set->shouldReceive('get')
- ->zeroOrMoreTimes()
- ->with($name)
- ->andReturn($header);
- $set->shouldReceive('has')
- ->zeroOrMoreTimes()
- ->with($name)
- ->andReturn(true);
- }
- }
-
- $header = $this->_createHeader();
- $set->shouldReceive('get')
- ->zeroOrMoreTimes()
- ->andReturn($header);
- $set->shouldReceive('has')
- ->zeroOrMoreTimes()
- ->andReturn(true);
-
- return $set;
- }
-
- private function _createHeader()
- {
- return $this->getMockery('Swift_Mime_Header')->shouldIgnoreMissing();
- }
-}
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/SendmailTransportTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/SendmailTransportTest.php
index 9040f9e..fe40d6c 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/SendmailTransportTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/SendmailTransportTest.php
@@ -2,31 +2,30 @@
class Swift_Transport_SendmailTransportTest extends Swift_Transport_AbstractSmtpEventSupportTest
{
- protected function _getTransport($buf, $dispatcher = null, $command = '/usr/sbin/sendmail -bs')
+ protected function getTransport($buf, $dispatcher = null, $addressEncoder = null, $command = '/usr/sbin/sendmail -bs')
{
if (!$dispatcher) {
- $dispatcher = $this->_createEventDispatcher();
+ $dispatcher = $this->createEventDispatcher();
}
- $transport = new Swift_Transport_SendmailTransport($buf, $dispatcher);
+ $transport = new Swift_Transport_SendmailTransport($buf, $dispatcher, 'example.org', $addressEncoder);
$transport->setCommand($command);
return $transport;
}
- protected function _getSendmail($buf, $dispatcher = null)
+ protected function getSendmail($buf, $dispatcher = null)
{
if (!$dispatcher) {
- $dispatcher = $this->_createEventDispatcher();
+ $dispatcher = $this->createEventDispatcher();
}
- $sendmail = new Swift_Transport_SendmailTransport($buf, $dispatcher);
- return $sendmail;
+ return new Swift_Transport_SendmailTransport($buf, $dispatcher);
}
public function testCommandCanBeSetAndFetched()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getSendmail($buf);
+ $buf = $this->getBuffer();
+ $sendmail = $this->getSendmail($buf);
$sendmail->setCommand('/usr/sbin/sendmail -bs');
$this->assertEquals('/usr/sbin/sendmail -bs', $sendmail->getCommand());
@@ -36,13 +35,13 @@ public function testCommandCanBeSetAndFetched()
public function testSendingMessageIn_t_ModeUsesSimplePipe()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getSendmail($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $sendmail = $this->getSendmail($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => 'Foobar', 'zip@button' => 'Zippy'));
+ ->andReturn(['foo@bar' => 'Foobar', 'zip@button' => 'Zippy']);
$message->shouldReceive('toByteStream')
->once()
->with($buf);
@@ -52,10 +51,10 @@ public function testSendingMessageIn_t_ModeUsesSimplePipe()
->once();
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array("\r\n" => "\n", "\n." => "\n.."));
+ ->with(["\r\n" => "\n", "\n." => "\n.."]);
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array());
+ ->with([]);
$sendmail->setCommand('/usr/sbin/sendmail -t');
$this->assertEquals(2, $sendmail->send($message));
@@ -63,13 +62,13 @@ public function testSendingMessageIn_t_ModeUsesSimplePipe()
public function testSendingIn_t_ModeWith_i_FlagDoesntEscapeDot()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getSendmail($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $sendmail = $this->getSendmail($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => 'Foobar', 'zip@button' => 'Zippy'));
+ ->andReturn(['foo@bar' => 'Foobar', 'zip@button' => 'Zippy']);
$message->shouldReceive('toByteStream')
->once()
->with($buf);
@@ -79,10 +78,10 @@ public function testSendingIn_t_ModeWith_i_FlagDoesntEscapeDot()
->once();
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array("\r\n" => "\n"));
+ ->with(["\r\n" => "\n"]);
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array());
+ ->with([]);
$sendmail->setCommand('/usr/sbin/sendmail -i -t');
$this->assertEquals(2, $sendmail->send($message));
@@ -90,13 +89,13 @@ public function testSendingIn_t_ModeWith_i_FlagDoesntEscapeDot()
public function testSendingInTModeWith_oi_FlagDoesntEscapeDot()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getSendmail($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $sendmail = $this->getSendmail($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => 'Foobar', 'zip@button' => 'Zippy'));
+ ->andReturn(['foo@bar' => 'Foobar', 'zip@button' => 'Zippy']);
$message->shouldReceive('toByteStream')
->once()
->with($buf);
@@ -106,10 +105,10 @@ public function testSendingInTModeWith_oi_FlagDoesntEscapeDot()
->once();
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array("\r\n" => "\n"));
+ ->with(["\r\n" => "\n"]);
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array());
+ ->with([]);
$sendmail->setCommand('/usr/sbin/sendmail -oi -t');
$this->assertEquals(2, $sendmail->send($message));
@@ -117,13 +116,13 @@ public function testSendingInTModeWith_oi_FlagDoesntEscapeDot()
public function testSendingMessageRegeneratesId()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getSendmail($buf);
- $message = $this->_createMessage();
+ $buf = $this->getBuffer();
+ $sendmail = $this->getSendmail($buf);
+ $message = $this->createMessage();
$message->shouldReceive('getTo')
->zeroOrMoreTimes()
- ->andReturn(array('foo@bar' => 'Foobar', 'zip@button' => 'Zippy'));
+ ->andReturn(['foo@bar' => 'Foobar', 'zip@button' => 'Zippy']);
$message->shouldReceive('generateId');
$buf->shouldReceive('initialize')
->once();
@@ -131,10 +130,10 @@ public function testSendingMessageRegeneratesId()
->once();
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array("\r\n" => "\n", "\n." => "\n.."));
+ ->with(["\r\n" => "\n", "\n." => "\n.."]);
$buf->shouldReceive('setWriteTranslations')
->once()
- ->with(array());
+ ->with([]);
$sendmail->setCommand('/usr/sbin/sendmail -t');
$this->assertEquals(2, $sendmail->send($message));
@@ -142,8 +141,8 @@ public function testSendingMessageRegeneratesId()
public function testFluidInterface()
{
- $buf = $this->_getBuffer();
- $sendmail = $this->_getTransport($buf);
+ $buf = $this->getBuffer();
+ $sendmail = $this->getTransport($buf);
$ref = $sendmail->setCommand('/foo');
$this->assertEquals($ref, $sendmail);
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/StreamBufferTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/StreamBufferTest.php
index 5109b56..540709a 100644
--- a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/StreamBufferTest.php
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Transport/StreamBufferTest.php
@@ -1,42 +1,42 @@
_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->once())
->method('createFilter')
->with('a', 'b')
- ->will($this->returnCallback(array($this, '_createFilter')));
+ ->will($this->returnCallback([$this, 'createFilter']));
- $buffer = $this->_createBuffer($factory);
- $buffer->setWriteTranslations(array('a' => 'b'));
+ $buffer = $this->createBuffer($factory);
+ $buffer->setWriteTranslations(['a' => 'b']);
}
public function testOverridingTranslationsOnlyAddsNeededFilters()
{
- $factory = $this->_createFactory();
+ $factory = $this->createFactory();
$factory->expects($this->exactly(2))
->method('createFilter')
- ->will($this->returnCallback(array($this, '_createFilter')));
+ ->will($this->returnCallback([$this, 'createFilter']));
- $buffer = $this->_createBuffer($factory);
- $buffer->setWriteTranslations(array('a' => 'b'));
- $buffer->setWriteTranslations(array('x' => 'y', 'a' => 'b'));
+ $buffer = $this->createBuffer($factory);
+ $buffer->setWriteTranslations(['a' => 'b']);
+ $buffer->setWriteTranslations(['x' => 'y', 'a' => 'b']);
}
- private function _createBuffer($replacementFactory)
+ private function createBuffer($replacementFactory)
{
return new Swift_Transport_StreamBuffer($replacementFactory);
}
- private function _createFactory()
+ private function createFactory()
{
return $this->getMockBuilder('Swift_ReplacementFilterFactory')->getMock();
}
- public function _createFilter()
+ public function createFilter()
{
return $this->getMockBuilder('Swift_StreamFilter')->getMock();
}
diff --git a/vendor/symfony/polyfill-iconv/Iconv.php b/vendor/symfony/polyfill-iconv/Iconv.php
new file mode 100644
index 0000000..77e7ca0
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/Iconv.php
@@ -0,0 +1,741 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Iconv;
+
+/**
+ * iconv implementation in pure PHP, UTF-8 centric.
+ *
+ * Implemented:
+ * - iconv - Convert string to requested character encoding
+ * - iconv_mime_decode - Decodes a MIME header field
+ * - iconv_mime_decode_headers - Decodes multiple MIME header fields at once
+ * - iconv_get_encoding - Retrieve internal configuration variables of iconv extension
+ * - iconv_set_encoding - Set current setting for character encoding conversion
+ * - iconv_mime_encode - Composes a MIME header field
+ * - iconv_strlen - Returns the character count of string
+ * - iconv_strpos - Finds position of first occurrence of a needle within a haystack
+ * - iconv_strrpos - Finds the last occurrence of a needle within a haystack
+ * - iconv_substr - Cut out part of a string
+ *
+ * Charsets available for conversion are defined by files
+ * in the charset/ directory and by Iconv::$alias below.
+ * You're welcome to send back any addition you make.
+ *
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+final class Iconv
+{
+ const ERROR_ILLEGAL_CHARACTER = 'iconv(): Detected an illegal character in input string';
+ const ERROR_WRONG_CHARSET = 'iconv(): Wrong charset, conversion from `%s\' to `%s\' is not allowed';
+
+ public static $inputEncoding = 'utf-8';
+ public static $outputEncoding = 'utf-8';
+ public static $internalEncoding = 'utf-8';
+
+ private static $alias = array(
+ 'utf8' => 'utf-8',
+ 'ascii' => 'us-ascii',
+ 'tis-620' => 'iso-8859-11',
+ 'cp1250' => 'windows-1250',
+ 'cp1251' => 'windows-1251',
+ 'cp1252' => 'windows-1252',
+ 'cp1253' => 'windows-1253',
+ 'cp1254' => 'windows-1254',
+ 'cp1255' => 'windows-1255',
+ 'cp1256' => 'windows-1256',
+ 'cp1257' => 'windows-1257',
+ 'cp1258' => 'windows-1258',
+ 'shift-jis' => 'cp932',
+ 'shift_jis' => 'cp932',
+ 'latin1' => 'iso-8859-1',
+ 'latin2' => 'iso-8859-2',
+ 'latin3' => 'iso-8859-3',
+ 'latin4' => 'iso-8859-4',
+ 'latin5' => 'iso-8859-9',
+ 'latin6' => 'iso-8859-10',
+ 'latin7' => 'iso-8859-13',
+ 'latin8' => 'iso-8859-14',
+ 'latin9' => 'iso-8859-15',
+ 'latin10' => 'iso-8859-16',
+ 'iso8859-1' => 'iso-8859-1',
+ 'iso8859-2' => 'iso-8859-2',
+ 'iso8859-3' => 'iso-8859-3',
+ 'iso8859-4' => 'iso-8859-4',
+ 'iso8859-5' => 'iso-8859-5',
+ 'iso8859-6' => 'iso-8859-6',
+ 'iso8859-7' => 'iso-8859-7',
+ 'iso8859-8' => 'iso-8859-8',
+ 'iso8859-9' => 'iso-8859-9',
+ 'iso8859-10' => 'iso-8859-10',
+ 'iso8859-11' => 'iso-8859-11',
+ 'iso8859-12' => 'iso-8859-12',
+ 'iso8859-13' => 'iso-8859-13',
+ 'iso8859-14' => 'iso-8859-14',
+ 'iso8859-15' => 'iso-8859-15',
+ 'iso8859-16' => 'iso-8859-16',
+ 'iso_8859-1' => 'iso-8859-1',
+ 'iso_8859-2' => 'iso-8859-2',
+ 'iso_8859-3' => 'iso-8859-3',
+ 'iso_8859-4' => 'iso-8859-4',
+ 'iso_8859-5' => 'iso-8859-5',
+ 'iso_8859-6' => 'iso-8859-6',
+ 'iso_8859-7' => 'iso-8859-7',
+ 'iso_8859-8' => 'iso-8859-8',
+ 'iso_8859-9' => 'iso-8859-9',
+ 'iso_8859-10' => 'iso-8859-10',
+ 'iso_8859-11' => 'iso-8859-11',
+ 'iso_8859-12' => 'iso-8859-12',
+ 'iso_8859-13' => 'iso-8859-13',
+ 'iso_8859-14' => 'iso-8859-14',
+ 'iso_8859-15' => 'iso-8859-15',
+ 'iso_8859-16' => 'iso-8859-16',
+ 'iso88591' => 'iso-8859-1',
+ 'iso88592' => 'iso-8859-2',
+ 'iso88593' => 'iso-8859-3',
+ 'iso88594' => 'iso-8859-4',
+ 'iso88595' => 'iso-8859-5',
+ 'iso88596' => 'iso-8859-6',
+ 'iso88597' => 'iso-8859-7',
+ 'iso88598' => 'iso-8859-8',
+ 'iso88599' => 'iso-8859-9',
+ 'iso885910' => 'iso-8859-10',
+ 'iso885911' => 'iso-8859-11',
+ 'iso885912' => 'iso-8859-12',
+ 'iso885913' => 'iso-8859-13',
+ 'iso885914' => 'iso-8859-14',
+ 'iso885915' => 'iso-8859-15',
+ 'iso885916' => 'iso-8859-16',
+ );
+ private static $translitMap = array();
+ private static $convertMap = array();
+ private static $errorHandler;
+ private static $lastError;
+
+ private static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
+ private static $isValidUtf8;
+
+ public static function iconv($inCharset, $outCharset, $str)
+ {
+ $str = (string) $str;
+ if ('' === $str) {
+ return '';
+ }
+
+ // Prepare for //IGNORE and //TRANSLIT
+
+ $translit = $ignore = '';
+
+ $outCharset = strtolower($outCharset);
+ $inCharset = strtolower($inCharset);
+
+ if ('' === $outCharset) {
+ $outCharset = 'iso-8859-1';
+ }
+ if ('' === $inCharset) {
+ $inCharset = 'iso-8859-1';
+ }
+
+ do {
+ $loop = false;
+
+ if ('//translit' === substr($outCharset, -10)) {
+ $loop = $translit = true;
+ $outCharset = substr($outCharset, 0, -10);
+ }
+
+ if ('//ignore' === substr($outCharset, -8)) {
+ $loop = $ignore = true;
+ $outCharset = substr($outCharset, 0, -8);
+ }
+ } while ($loop);
+
+ do {
+ $loop = false;
+
+ if ('//translit' === substr($inCharset, -10)) {
+ $loop = true;
+ $inCharset = substr($inCharset, 0, -10);
+ }
+
+ if ('//ignore' === substr($inCharset, -8)) {
+ $loop = true;
+ $inCharset = substr($inCharset, 0, -8);
+ }
+ } while ($loop);
+
+ if (isset(self::$alias[$inCharset])) {
+ $inCharset = self::$alias[$inCharset];
+ }
+ if (isset(self::$alias[$outCharset])) {
+ $outCharset = self::$alias[$outCharset];
+ }
+
+ // Load charset maps
+
+ if (('utf-8' !== $inCharset && !self::loadMap('from.', $inCharset, $inMap))
+ || ('utf-8' !== $outCharset && !self::loadMap('to.', $outCharset, $outMap))) {
+ trigger_error(sprintf(self::ERROR_WRONG_CHARSET, $inCharset, $outCharset));
+
+ return false;
+ }
+
+ if ('utf-8' !== $inCharset) {
+ // Convert input to UTF-8
+ $result = '';
+ if (self::mapToUtf8($result, $inMap, $str, $ignore)) {
+ $str = $result;
+ } else {
+ $str = false;
+ }
+ self::$isValidUtf8 = true;
+ } else {
+ self::$isValidUtf8 = preg_match('//u', $str);
+
+ if (!self::$isValidUtf8 && !$ignore) {
+ trigger_error(self::ERROR_ILLEGAL_CHARACTER);
+
+ return false;
+ }
+
+ if ('utf-8' === $outCharset) {
+ // UTF-8 validation
+ $str = self::utf8ToUtf8($str, $ignore);
+ }
+ }
+
+ if ('utf-8' !== $outCharset && false !== $str) {
+ // Convert output to UTF-8
+ $result = '';
+ if (self::mapFromUtf8($result, $outMap, $str, $ignore, $translit)) {
+ return $result;
+ }
+
+ return false;
+ }
+
+ return $str;
+ }
+
+ public static function iconv_mime_decode_headers($str, $mode = 0, $charset = null)
+ {
+ if (null === $charset) {
+ $charset = self::$internalEncoding;
+ }
+
+ if (false !== strpos($str, "\r")) {
+ $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n");
+ }
+ $str = explode("\n\n", $str, 2);
+
+ $headers = array();
+
+ $str = preg_split('/\n(?![ \t])/', $str[0]);
+ foreach ($str as $str) {
+ $str = self::iconv_mime_decode($str, $mode, $charset);
+ if (false === $str) {
+ return false;
+ }
+ $str = explode(':', $str, 2);
+
+ if (2 === \count($str)) {
+ if (isset($headers[$str[0]])) {
+ if (!\is_array($headers[$str[0]])) {
+ $headers[$str[0]] = array($headers[$str[0]]);
+ }
+ $headers[$str[0]][] = ltrim($str[1]);
+ } else {
+ $headers[$str[0]] = ltrim($str[1]);
+ }
+ }
+ }
+
+ return $headers;
+ }
+
+ public static function iconv_mime_decode($str, $mode = 0, $charset = null)
+ {
+ if (null === $charset) {
+ $charset = self::$internalEncoding;
+ }
+ if (ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) {
+ $charset .= '//IGNORE';
+ }
+
+ if (false !== strpos($str, "\r")) {
+ $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n");
+ }
+ $str = preg_split('/\n(?![ \t])/', rtrim($str), 2);
+ $str = preg_replace('/[ \t]*\n[ \t]+/', ' ', rtrim($str[0]));
+ $str = preg_split('/=\?([^?]+)\?([bqBQ])\?(.*?)\?=/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $result = self::iconv('utf-8', $charset, $str[0]);
+ if (false === $result) {
+ return false;
+ }
+
+ $i = 1;
+ $len = \count($str);
+
+ while ($i < $len) {
+ $c = strtolower($str[$i]);
+ if ((ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode)
+ && 'utf-8' !== $c
+ && !isset(self::$alias[$c])
+ && !self::loadMap('from.', $c, $d)) {
+ $d = false;
+ } elseif ('B' === strtoupper($str[$i + 1])) {
+ $d = base64_decode($str[$i + 2]);
+ } else {
+ $d = rawurldecode(strtr(str_replace('%', '%25', $str[$i + 2]), '=_', '% '));
+ }
+
+ if (false !== $d) {
+ if ('' !== $d) {
+ if ('' === $d = self::iconv($c, $charset, $d)) {
+ $str[$i + 3] = substr($str[$i + 3], 1);
+ } else {
+ $result .= $d;
+ }
+ }
+ $d = self::iconv('utf-8', $charset, $str[$i + 3]);
+ if ('' !== trim($d)) {
+ $result .= $d;
+ }
+ } elseif (ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) {
+ $result .= "=?{$str[$i]}?{$str[$i + 1]}?{$str[$i + 2]}?={$str[$i + 3]}";
+ } else {
+ $result = false;
+ break;
+ }
+
+ $i += 4;
+ }
+
+ return $result;
+ }
+
+ public static function iconv_get_encoding($type = 'all')
+ {
+ switch ($type) {
+ case 'input_encoding': return self::$inputEncoding;
+ case 'output_encoding': return self::$outputEncoding;
+ case 'internal_encoding': return self::$internalEncoding;
+ }
+
+ return array(
+ 'input_encoding' => self::$inputEncoding,
+ 'output_encoding' => self::$outputEncoding,
+ 'internal_encoding' => self::$internalEncoding,
+ );
+ }
+
+ public static function iconv_set_encoding($type, $charset)
+ {
+ switch ($type) {
+ case 'input_encoding': self::$inputEncoding = $charset; break;
+ case 'output_encoding': self::$outputEncoding = $charset; break;
+ case 'internal_encoding': self::$internalEncoding = $charset; break;
+
+ default: return false;
+ }
+
+ return true;
+ }
+
+ public static function iconv_mime_encode($fieldName, $fieldValue, $pref = null)
+ {
+ if (!\is_array($pref)) {
+ $pref = array();
+ }
+
+ $pref += array(
+ 'scheme' => 'B',
+ 'input-charset' => self::$internalEncoding,
+ 'output-charset' => self::$internalEncoding,
+ 'line-length' => 76,
+ 'line-break-chars' => "\r\n",
+ );
+
+ if (preg_match('/[\x80-\xFF]/', $fieldName)) {
+ $fieldName = '';
+ }
+
+ $scheme = strtoupper(substr($pref['scheme'], 0, 1));
+ $in = strtolower($pref['input-charset']);
+ $out = strtolower($pref['output-charset']);
+
+ if ('utf-8' !== $in && false === $fieldValue = self::iconv($in, 'utf-8', $fieldValue)) {
+ return false;
+ }
+
+ preg_match_all('/./us', $fieldValue, $chars);
+
+ $chars = isset($chars[0]) ? $chars[0] : array();
+
+ $lineBreak = (int) $pref['line-length'];
+ $lineStart = "=?{$pref['output-charset']}?{$scheme}?";
+ $lineLength = \strlen($fieldName) + 2 + \strlen($lineStart) + 2;
+ $lineOffset = \strlen($lineStart) + 3;
+ $lineData = '';
+
+ $fieldValue = array();
+
+ $Q = 'Q' === $scheme;
+
+ foreach ($chars as $c) {
+ if ('utf-8' !== $out && false === $c = self::iconv('utf-8', $out, $c)) {
+ return false;
+ }
+
+ $o = $Q
+ ? $c = preg_replace_callback(
+ '/[=_\?\x00-\x1F\x80-\xFF]/',
+ array(__CLASS__, 'qpByteCallback'),
+ $c
+ )
+ : base64_encode($lineData.$c);
+
+ if (isset($o[$lineBreak - $lineLength])) {
+ if (!$Q) {
+ $lineData = base64_encode($lineData);
+ }
+ $fieldValue[] = $lineStart.$lineData.'?=';
+ $lineLength = $lineOffset;
+ $lineData = '';
+ }
+
+ $lineData .= $c;
+ $Q && $lineLength += \strlen($c);
+ }
+
+ if ('' !== $lineData) {
+ if (!$Q) {
+ $lineData = base64_encode($lineData);
+ }
+ $fieldValue[] = $lineStart.$lineData.'?=';
+ }
+
+ return $fieldName.': '.implode($pref['line-break-chars'].' ', $fieldValue);
+ }
+
+ public static function iconv_strlen($s, $encoding = null)
+ {
+ static $hasXml = null;
+ if (null === $hasXml) {
+ $hasXml = \extension_loaded('xml');
+ }
+
+ if ($hasXml) {
+ return self::strlen1($s, $encoding);
+ }
+
+ return self::strlen2($s, $encoding);
+ }
+
+ public static function strlen1($s, $encoding = null)
+ {
+ if (null === $encoding) {
+ $encoding = self::$internalEncoding;
+ }
+ if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) {
+ return false;
+ }
+
+ return \strlen(utf8_decode($s));
+ }
+
+ public static function strlen2($s, $encoding = null)
+ {
+ if (null === $encoding) {
+ $encoding = self::$internalEncoding;
+ }
+ if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) {
+ return false;
+ }
+
+ $ulenMask = self::$ulenMask;
+
+ $i = 0;
+ $j = 0;
+ $len = \strlen($s);
+
+ while ($i < $len) {
+ $u = $s[$i] & "\xF0";
+ $i += isset($ulenMask[$u]) ? $ulenMask[$u] : 1;
+ ++$j;
+ }
+
+ return $j;
+ }
+
+ public static function iconv_strpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ if (null === $encoding) {
+ $encoding = self::$internalEncoding;
+ }
+
+ if (0 !== stripos($encoding, 'utf-8')) {
+ if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) {
+ return false;
+ }
+ if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) {
+ return false;
+ }
+ }
+
+ if ($offset = (int) $offset) {
+ $haystack = self::iconv_substr($haystack, $offset, 2147483647, 'utf-8');
+ }
+ $pos = strpos($haystack, $needle);
+
+ return false === $pos ? false : ($offset + ($pos ? self::iconv_strlen(substr($haystack, 0, $pos), 'utf-8') : 0));
+ }
+
+ public static function iconv_strrpos($haystack, $needle, $encoding = null)
+ {
+ if (null === $encoding) {
+ $encoding = self::$internalEncoding;
+ }
+
+ if (0 !== stripos($encoding, 'utf-8')) {
+ if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) {
+ return false;
+ }
+ if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) {
+ return false;
+ }
+ }
+
+ $pos = isset($needle[0]) ? strrpos($haystack, $needle) : false;
+
+ return false === $pos ? false : self::iconv_strlen($pos ? substr($haystack, 0, $pos) : $haystack, 'utf-8');
+ }
+
+ public static function iconv_substr($s, $start, $length = 2147483647, $encoding = null)
+ {
+ if (null === $encoding) {
+ $encoding = self::$internalEncoding;
+ }
+ if (0 !== stripos($encoding, 'utf-8')) {
+ $encoding = null;
+ } elseif (false === $s = self::iconv($encoding, 'utf-8', $s)) {
+ return false;
+ }
+
+ $s = (string) $s;
+ $slen = self::iconv_strlen($s, 'utf-8');
+ $start = (int) $start;
+
+ if (0 > $start) {
+ $start += $slen;
+ }
+ if (0 > $start) {
+ return false;
+ }
+ if ($start >= $slen) {
+ return false;
+ }
+
+ $rx = $slen - $start;
+
+ if (0 > $length) {
+ $length += $rx;
+ }
+ if (0 === $length) {
+ return '';
+ }
+ if (0 > $length) {
+ return false;
+ }
+
+ if ($length > $rx) {
+ $length = $rx;
+ }
+
+ $rx = '/^'.($start ? self::pregOffset($start) : '').'('.self::pregOffset($length).')/u';
+
+ $s = preg_match($rx, $s, $s) ? $s[1] : '';
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return self::iconv('utf-8', $encoding, $s);
+ }
+
+ private static function loadMap($type, $charset, &$map)
+ {
+ if (!isset(self::$convertMap[$type.$charset])) {
+ if (false === $map = self::getData($type.$charset)) {
+ if ('to.' === $type && self::loadMap('from.', $charset, $map)) {
+ $map = array_flip($map);
+ } else {
+ return false;
+ }
+ }
+
+ self::$convertMap[$type.$charset] = $map;
+ } else {
+ $map = self::$convertMap[$type.$charset];
+ }
+
+ return true;
+ }
+
+ private static function utf8ToUtf8($str, $ignore)
+ {
+ $ulenMask = self::$ulenMask;
+ $valid = self::$isValidUtf8;
+
+ $u = $str;
+ $i = $j = 0;
+ $len = \strlen($str);
+
+ while ($i < $len) {
+ if ($str[$i] < "\x80") {
+ $u[$j++] = $str[$i++];
+ } else {
+ $ulen = $str[$i] & "\xF0";
+ $ulen = isset($ulenMask[$ulen]) ? $ulenMask[$ulen] : 1;
+ $uchr = substr($str, $i, $ulen);
+
+ if (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr))) {
+ if ($ignore) {
+ ++$i;
+ continue;
+ }
+
+ trigger_error(self::ERROR_ILLEGAL_CHARACTER);
+
+ return false;
+ } else {
+ $i += $ulen;
+ }
+
+ $u[$j++] = $uchr[0];
+
+ isset($uchr[1]) && 0 !== ($u[$j++] = $uchr[1])
+ && isset($uchr[2]) && 0 !== ($u[$j++] = $uchr[2])
+ && isset($uchr[3]) && 0 !== ($u[$j++] = $uchr[3]);
+ }
+ }
+
+ return substr($u, 0, $j);
+ }
+
+ private static function mapToUtf8(&$result, array $map, $str, $ignore)
+ {
+ $len = \strlen($str);
+ for ($i = 0; $i < $len; ++$i) {
+ if (isset($str[$i + 1], $map[$str[$i].$str[$i + 1]])) {
+ $result .= $map[$str[$i].$str[++$i]];
+ } elseif (isset($map[$str[$i]])) {
+ $result .= $map[$str[$i]];
+ } elseif (!$ignore) {
+ trigger_error(self::ERROR_ILLEGAL_CHARACTER);
+
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private static function mapFromUtf8(&$result, array $map, $str, $ignore, $translit)
+ {
+ $ulenMask = self::$ulenMask;
+ $valid = self::$isValidUtf8;
+
+ if ($translit && !self::$translitMap) {
+ self::$translitMap = self::getData('translit');
+ }
+
+ $i = 0;
+ $len = \strlen($str);
+
+ while ($i < $len) {
+ if ($str[$i] < "\x80") {
+ $uchr = $str[$i++];
+ } else {
+ $ulen = $str[$i] & "\xF0";
+ $ulen = isset($ulenMask[$ulen]) ? $ulenMask[$ulen] : 1;
+ $uchr = substr($str, $i, $ulen);
+
+ if ($ignore && (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr)))) {
+ ++$i;
+ continue;
+ } else {
+ $i += $ulen;
+ }
+ }
+
+ if (isset($map[$uchr])) {
+ $result .= $map[$uchr];
+ } elseif ($translit) {
+ if (isset(self::$translitMap[$uchr])) {
+ $uchr = self::$translitMap[$uchr];
+ } elseif ($uchr >= "\xC3\x80") {
+ $uchr = \Normalizer::normalize($uchr, \Normalizer::NFD);
+
+ if ($uchr[0] < "\x80") {
+ $uchr = $uchr[0];
+ } elseif ($ignore) {
+ continue;
+ } else {
+ return false;
+ }
+ } elseif ($ignore) {
+ continue;
+ } else {
+ return false;
+ }
+
+ $str = $uchr.substr($str, $i);
+ $len = \strlen($str);
+ $i = 0;
+ } elseif (!$ignore) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private static function qpByteCallback(array $m)
+ {
+ return '='.strtoupper(dechex(\ord($m[0])));
+ }
+
+ private static function pregOffset($offset)
+ {
+ $rx = array();
+ $offset = (int) $offset;
+
+ while ($offset > 65535) {
+ $rx[] = '.{65535}';
+ $offset -= 65535;
+ }
+
+ return implode('', $rx).'.{'.$offset.'}';
+ }
+
+ private static function getData($file)
+ {
+ if (file_exists($file = __DIR__.'/Resources/charset/'.$file.'.php')) {
+ return require $file;
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/symfony/polyfill-iconv/LICENSE b/vendor/symfony/polyfill-iconv/LICENSE
new file mode 100644
index 0000000..24fa32c
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2018 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-iconv/README.md b/vendor/symfony/polyfill-iconv/README.md
new file mode 100644
index 0000000..2421831
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/README.md
@@ -0,0 +1,14 @@
+Symfony Polyfill / Iconv
+========================
+
+This component provides a native PHP implementation of the
+[php.net/iconv](http://php.net/iconv) functions
+(short of [`ob_iconv_handler`](http://php.net/manual/en/function.ob-iconv-handler.php)).
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php
new file mode 100644
index 0000000..b119854
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php
@@ -0,0 +1,13719 @@
+ ' ',
+ 'A' => ',',
+ 'B' => '、',
+ 'C' => '。',
+ 'D' => '.',
+ 'E' => '•',
+ 'F' => ';',
+ 'G' => ':',
+ 'H' => '?',
+ 'I' => '!',
+ 'J' => '︰',
+ 'K' => '…',
+ 'L' => '‥',
+ 'M' => '﹐',
+ 'N' => '、',
+ 'O' => '﹒',
+ 'P' => '·',
+ 'Q' => '﹔',
+ 'R' => '﹕',
+ 'S' => '﹖',
+ 'T' => '﹗',
+ 'U' => '|',
+ 'V' => '–',
+ 'W' => '︱',
+ 'X' => '—',
+ 'Y' => '︳',
+ 'Z' => '�',
+ '[' => '︴',
+ '\\' => '﹏',
+ ']' => '(',
+ '^' => ')',
+ '_' => '︵',
+ '`' => '︶',
+ 'a' => '{',
+ 'b' => '}',
+ 'c' => '︷',
+ 'd' => '︸',
+ 'e' => '〔',
+ 'f' => '〕',
+ 'g' => '︹',
+ 'h' => '︺',
+ 'i' => '【',
+ 'j' => '】',
+ 'k' => '︻',
+ 'l' => '︼',
+ 'm' => '《',
+ 'n' => '》',
+ 'o' => '︽',
+ 'p' => '︾',
+ 'q' => '〈',
+ 'r' => '〉',
+ 's' => '︿',
+ 't' => '﹀',
+ 'u' => '「',
+ 'v' => '」',
+ 'w' => '﹁',
+ 'x' => '﹂',
+ 'y' => '『',
+ 'z' => '』',
+ '{' => '﹃',
+ '|' => '﹄',
+ '}' => '﹙',
+ '~' => '﹚',
+ '' => '﹛',
+ '' => '﹜',
+ '' => '﹝',
+ '' => '﹞',
+ '' => '‘',
+ '' => '’',
+ '' => '“',
+ '' => '”',
+ '' => '〝',
+ '' => '〞',
+ '' => '‵',
+ '' => '′',
+ '' => '#',
+ '' => '&',
+ '' => '*',
+ '' => '※',
+ '' => '§',
+ '' => '〃',
+ '' => '○',
+ '' => '●',
+ '' => '△',
+ '' => '▲',
+ '' => '◎',
+ '' => '☆',
+ '' => '★',
+ '' => '◇',
+ '' => '◆',
+ '' => '□',
+ '' => '■',
+ '' => '▽',
+ '' => '▼',
+ '' => '㊣',
+ '' => '℅',
+ '' => '‾',
+ '' => '�',
+ '' => '_',
+ '' => '�',
+ '' => '﹉',
+ '' => '﹊',
+ '' => '﹍',
+ '' => '﹎',
+ '' => '﹋',
+ '' => '﹌',
+ '' => '﹟',
+ '' => '﹠',
+ '' => '﹡',
+ '' => '+',
+ '' => '-',
+ '' => '×',
+ '' => '÷',
+ '' => '±',
+ '' => '√',
+ '' => '<',
+ '' => '>',
+ '' => '=',
+ '' => '≦',
+ '' => '≧',
+ '' => '≠',
+ '' => '∞',
+ '' => '≒',
+ '' => '≡',
+ '' => '﹢',
+ '' => '﹣',
+ '' => '﹤',
+ '' => '﹥',
+ '' => '﹦',
+ '' => '∼',
+ '' => '∩',
+ '' => '∪',
+ '' => '⊥',
+ '' => '∠',
+ '' => '∟',
+ '' => '⊿',
+ '' => '㏒',
+ '' => '㏑',
+ '' => '∫',
+ '' => '∮',
+ '' => '∵',
+ '' => '∴',
+ '' => '♀',
+ '' => '♂',
+ '' => '♁',
+ '' => '☉',
+ '' => '↑',
+ '' => '↓',
+ '' => '←',
+ '' => '→',
+ '' => '↖',
+ '' => '↗',
+ '' => '↙',
+ '' => '↘',
+ '' => '∥',
+ '' => '∣',
+ '' => '�',
+ '@' => '�',
+ 'A' => '/',
+ 'B' => '\',
+ 'C' => '$',
+ 'D' => '¥',
+ 'E' => '〒',
+ 'F' => '¢',
+ 'G' => '£',
+ 'H' => '%',
+ 'I' => '@',
+ 'J' => '℃',
+ 'K' => '℉',
+ 'L' => '﹩',
+ 'M' => '﹪',
+ 'N' => '﹫',
+ 'O' => '㏕',
+ 'P' => '㎜',
+ 'Q' => '㎝',
+ 'R' => '㎞',
+ 'S' => '㏎',
+ 'T' => '㎡',
+ 'U' => '㎎',
+ 'V' => '㎏',
+ 'W' => '㏄',
+ 'X' => '°',
+ 'Y' => '兙',
+ 'Z' => '兛',
+ '[' => '兞',
+ '\\' => '兝',
+ ']' => '兡',
+ '^' => '兣',
+ '_' => '嗧',
+ '`' => '瓩',
+ 'a' => '糎',
+ 'b' => '▁',
+ 'c' => '▂',
+ 'd' => '▃',
+ 'e' => '▄',
+ 'f' => '▅',
+ 'g' => '▆',
+ 'h' => '▇',
+ 'i' => '█',
+ 'j' => '▏',
+ 'k' => '▎',
+ 'l' => '▍',
+ 'm' => '▌',
+ 'n' => '▋',
+ 'o' => '▊',
+ 'p' => '▉',
+ 'q' => '┼',
+ 'r' => '┴',
+ 's' => '┬',
+ 't' => '┤',
+ 'u' => '├',
+ 'v' => '▔',
+ 'w' => '─',
+ 'x' => '│',
+ 'y' => '▕',
+ 'z' => '┌',
+ '{' => '┐',
+ '|' => '└',
+ '}' => '┘',
+ '~' => '╭',
+ '' => '╮',
+ '' => '╰',
+ '' => '╯',
+ '' => '═',
+ '' => '╞',
+ '' => '╪',
+ '' => '╡',
+ '' => '◢',
+ '' => '◣',
+ '' => '◥',
+ '' => '◤',
+ '' => '╱',
+ '' => '╲',
+ '' => '╳',
+ '' => '0',
+ '' => '1',
+ '' => '2',
+ '' => '3',
+ '' => '4',
+ '' => '5',
+ '' => '6',
+ '' => '7',
+ '' => '8',
+ '' => '9',
+ '' => 'Ⅰ',
+ '' => 'Ⅱ',
+ '' => 'Ⅲ',
+ '' => 'Ⅳ',
+ '' => 'Ⅴ',
+ '' => 'Ⅵ',
+ '' => 'Ⅶ',
+ '' => 'Ⅷ',
+ '' => 'Ⅸ',
+ '' => 'Ⅹ',
+ '' => '〡',
+ '' => '〢',
+ '' => '〣',
+ '' => '〤',
+ '' => '〥',
+ '' => '〦',
+ '' => '〧',
+ '' => '〨',
+ '' => '〩',
+ '' => '�',
+ '' => '卄',
+ '' => '�',
+ '' => 'A',
+ '' => 'B',
+ '' => 'C',
+ '' => 'D',
+ '' => 'E',
+ '' => 'F',
+ '' => 'G',
+ '' => 'H',
+ '' => 'I',
+ '' => 'J',
+ '' => 'K',
+ '' => 'L',
+ '' => 'M',
+ '' => 'N',
+ '' => 'O',
+ '' => 'P',
+ '' => 'Q',
+ '' => 'R',
+ '' => 'S',
+ '' => 'T',
+ '' => 'U',
+ '' => 'V',
+ '' => 'W',
+ '' => 'X',
+ '' => 'Y',
+ '' => 'Z',
+ '' => 'a',
+ '' => 'b',
+ '' => 'c',
+ '' => 'd',
+ '' => 'e',
+ '' => 'f',
+ '' => 'g',
+ '' => 'h',
+ '' => 'i',
+ '' => 'j',
+ '' => 'k',
+ '' => 'l',
+ '' => 'm',
+ '' => 'n',
+ '' => 'o',
+ '' => 'p',
+ '' => 'q',
+ '' => 'r',
+ '' => 's',
+ '' => 't',
+ '' => 'u',
+ '' => 'v',
+ '@' => 'w',
+ 'A' => 'x',
+ 'B' => 'y',
+ 'C' => 'z',
+ 'D' => 'Α',
+ 'E' => 'Β',
+ 'F' => 'Γ',
+ 'G' => 'Δ',
+ 'H' => 'Ε',
+ 'I' => 'Ζ',
+ 'J' => 'Η',
+ 'K' => 'Θ',
+ 'L' => 'Ι',
+ 'M' => 'Κ',
+ 'N' => 'Λ',
+ 'O' => 'Μ',
+ 'P' => 'Ν',
+ 'Q' => 'Ξ',
+ 'R' => 'Ο',
+ 'S' => 'Π',
+ 'T' => 'Ρ',
+ 'U' => 'Σ',
+ 'V' => 'Τ',
+ 'W' => 'Υ',
+ 'X' => 'Φ',
+ 'Y' => 'Χ',
+ 'Z' => 'Ψ',
+ '[' => 'Ω',
+ '\\' => 'α',
+ ']' => 'β',
+ '^' => 'γ',
+ '_' => 'δ',
+ '`' => 'ε',
+ 'a' => 'ζ',
+ 'b' => 'η',
+ 'c' => 'θ',
+ 'd' => 'ι',
+ 'e' => 'κ',
+ 'f' => 'λ',
+ 'g' => 'μ',
+ 'h' => 'ν',
+ 'i' => 'ξ',
+ 'j' => 'ο',
+ 'k' => 'π',
+ 'l' => 'ρ',
+ 'm' => 'σ',
+ 'n' => 'τ',
+ 'o' => 'υ',
+ 'p' => 'φ',
+ 'q' => 'χ',
+ 'r' => 'ψ',
+ 's' => 'ω',
+ 't' => 'ㄅ',
+ 'u' => 'ㄆ',
+ 'v' => 'ㄇ',
+ 'w' => 'ㄈ',
+ 'x' => 'ㄉ',
+ 'y' => 'ㄊ',
+ 'z' => 'ㄋ',
+ '{' => 'ㄌ',
+ '|' => 'ㄍ',
+ '}' => 'ㄎ',
+ '~' => 'ㄏ',
+ '' => 'ㄐ',
+ '' => 'ㄑ',
+ '' => 'ㄒ',
+ '' => 'ㄓ',
+ '' => 'ㄔ',
+ '' => 'ㄕ',
+ '' => 'ㄖ',
+ '' => 'ㄗ',
+ '' => 'ㄘ',
+ '' => 'ㄙ',
+ '' => 'ㄚ',
+ '' => 'ㄛ',
+ '' => 'ㄜ',
+ '' => 'ㄝ',
+ '' => 'ㄞ',
+ '' => 'ㄟ',
+ '' => 'ㄠ',
+ '' => 'ㄡ',
+ '' => 'ㄢ',
+ '' => 'ㄣ',
+ '' => 'ㄤ',
+ '' => 'ㄥ',
+ '' => 'ㄦ',
+ '' => 'ㄧ',
+ '' => 'ㄨ',
+ '' => 'ㄩ',
+ '' => '˙',
+ '' => 'ˉ',
+ '' => 'ˊ',
+ '' => 'ˇ',
+ '' => 'ˋ',
+ '@' => '一',
+ 'A' => '乙',
+ 'B' => '丁',
+ 'C' => '七',
+ 'D' => '乃',
+ 'E' => '九',
+ 'F' => '了',
+ 'G' => '二',
+ 'H' => '人',
+ 'I' => '儿',
+ 'J' => '入',
+ 'K' => '八',
+ 'L' => '几',
+ 'M' => '刀',
+ 'N' => '刁',
+ 'O' => '力',
+ 'P' => '匕',
+ 'Q' => '十',
+ 'R' => '卜',
+ 'S' => '又',
+ 'T' => '三',
+ 'U' => '下',
+ 'V' => '丈',
+ 'W' => '上',
+ 'X' => '丫',
+ 'Y' => '丸',
+ 'Z' => '凡',
+ '[' => '久',
+ '\\' => '么',
+ ']' => '也',
+ '^' => '乞',
+ '_' => '于',
+ '`' => '亡',
+ 'a' => '兀',
+ 'b' => '刃',
+ 'c' => '勺',
+ 'd' => '千',
+ 'e' => '叉',
+ 'f' => '口',
+ 'g' => '土',
+ 'h' => '士',
+ 'i' => '夕',
+ 'j' => '大',
+ 'k' => '女',
+ 'l' => '子',
+ 'm' => '孑',
+ 'n' => '孓',
+ 'o' => '寸',
+ 'p' => '小',
+ 'q' => '尢',
+ 'r' => '尸',
+ 's' => '山',
+ 't' => '川',
+ 'u' => '工',
+ 'v' => '己',
+ 'w' => '已',
+ 'x' => '巳',
+ 'y' => '巾',
+ 'z' => '干',
+ '{' => '廾',
+ '|' => '弋',
+ '}' => '弓',
+ '~' => '才',
+ '' => '丑',
+ '' => '丐',
+ '' => '不',
+ '' => '中',
+ '' => '丰',
+ '' => '丹',
+ '' => '之',
+ '' => '尹',
+ '' => '予',
+ '' => '云',
+ '' => '井',
+ '' => '互',
+ '' => '五',
+ '' => '亢',
+ '' => '仁',
+ '' => '什',
+ '' => '仃',
+ '' => '仆',
+ '' => '仇',
+ '' => '仍',
+ '' => '今',
+ '' => '介',
+ '' => '仄',
+ '' => '元',
+ '' => '允',
+ '' => '內',
+ '' => '六',
+ '' => '兮',
+ '' => '公',
+ '' => '冗',
+ '' => '凶',
+ '' => '分',
+ '' => '切',
+ '' => '刈',
+ '' => '勻',
+ '' => '勾',
+ '' => '勿',
+ '' => '化',
+ '' => '匹',
+ '' => '午',
+ '' => '升',
+ '' => '卅',
+ '' => '卞',
+ '' => '厄',
+ '' => '友',
+ '' => '及',
+ '' => '反',
+ '' => '壬',
+ '' => '天',
+ '' => '夫',
+ '' => '太',
+ '' => '夭',
+ '' => '孔',
+ '' => '少',
+ '' => '尤',
+ '' => '尺',
+ '' => '屯',
+ '' => '巴',
+ '' => '幻',
+ '' => '廿',
+ '' => '弔',
+ '' => '引',
+ '' => '心',
+ '' => '戈',
+ '' => '戶',
+ '' => '手',
+ '' => '扎',
+ '' => '支',
+ '' => '文',
+ '' => '斗',
+ '' => '斤',
+ '' => '方',
+ '' => '日',
+ '' => '曰',
+ '' => '月',
+ '' => '木',
+ '' => '欠',
+ '' => '止',
+ '' => '歹',
+ '' => '毋',
+ '' => '比',
+ '' => '毛',
+ '' => '氏',
+ '' => '水',
+ '' => '火',
+ '' => '爪',
+ '' => '父',
+ '' => '爻',
+ '' => '片',
+ '' => '牙',
+ '' => '牛',
+ '' => '犬',
+ '' => '王',
+ '' => '丙',
+ '@' => '世',
+ 'A' => '丕',
+ 'B' => '且',
+ 'C' => '丘',
+ 'D' => '主',
+ 'E' => '乍',
+ 'F' => '乏',
+ 'G' => '乎',
+ 'H' => '以',
+ 'I' => '付',
+ 'J' => '仔',
+ 'K' => '仕',
+ 'L' => '他',
+ 'M' => '仗',
+ 'N' => '代',
+ 'O' => '令',
+ 'P' => '仙',
+ 'Q' => '仞',
+ 'R' => '充',
+ 'S' => '兄',
+ 'T' => '冉',
+ 'U' => '冊',
+ 'V' => '冬',
+ 'W' => '凹',
+ 'X' => '出',
+ 'Y' => '凸',
+ 'Z' => '刊',
+ '[' => '加',
+ '\\' => '功',
+ ']' => '包',
+ '^' => '匆',
+ '_' => '北',
+ '`' => '匝',
+ 'a' => '仟',
+ 'b' => '半',
+ 'c' => '卉',
+ 'd' => '卡',
+ 'e' => '占',
+ 'f' => '卯',
+ 'g' => '卮',
+ 'h' => '去',
+ 'i' => '可',
+ 'j' => '古',
+ 'k' => '右',
+ 'l' => '召',
+ 'm' => '叮',
+ 'n' => '叩',
+ 'o' => '叨',
+ 'p' => '叼',
+ 'q' => '司',
+ 'r' => '叵',
+ 's' => '叫',
+ 't' => '另',
+ 'u' => '只',
+ 'v' => '史',
+ 'w' => '叱',
+ 'x' => '台',
+ 'y' => '句',
+ 'z' => '叭',
+ '{' => '叻',
+ '|' => '四',
+ '}' => '囚',
+ '~' => '外',
+ '' => '央',
+ '' => '失',
+ '' => '奴',
+ '' => '奶',
+ '' => '孕',
+ '' => '它',
+ '' => '尼',
+ '' => '巨',
+ '' => '巧',
+ '' => '左',
+ '' => '市',
+ '' => '布',
+ '' => '平',
+ '' => '幼',
+ '' => '弁',
+ '' => '弘',
+ '' => '弗',
+ '' => '必',
+ '' => '戊',
+ '' => '打',
+ '' => '扔',
+ '' => '扒',
+ '' => '扑',
+ '' => '斥',
+ '' => '旦',
+ '' => '朮',
+ '' => '本',
+ '' => '未',
+ '' => '末',
+ '' => '札',
+ '' => '正',
+ '' => '母',
+ '' => '民',
+ '' => '氐',
+ '' => '永',
+ '' => '汁',
+ '' => '汀',
+ '' => '氾',
+ '' => '犯',
+ '' => '玄',
+ '' => '玉',
+ '' => '瓜',
+ '' => '瓦',
+ '' => '甘',
+ '' => '生',
+ '' => '用',
+ '' => '甩',
+ '' => '田',
+ '' => '由',
+ '' => '甲',
+ '' => '申',
+ '' => '疋',
+ '' => '白',
+ '' => '皮',
+ '' => '皿',
+ '' => '目',
+ '' => '矛',
+ '' => '矢',
+ '' => '石',
+ '' => '示',
+ '' => '禾',
+ '' => '穴',
+ '' => '立',
+ '' => '丞',
+ '' => '丟',
+ '' => '乒',
+ '' => '乓',
+ '' => '乩',
+ '' => '亙',
+ '' => '交',
+ '' => '亦',
+ '' => '亥',
+ '' => '仿',
+ '' => '伉',
+ '' => '伙',
+ '' => '伊',
+ '' => '伕',
+ '' => '伍',
+ '' => '伐',
+ '' => '休',
+ '' => '伏',
+ '' => '仲',
+ '' => '件',
+ '' => '任',
+ '' => '仰',
+ '' => '仳',
+ '' => '份',
+ '' => '企',
+ '' => '伋',
+ '' => '光',
+ '' => '兇',
+ '' => '兆',
+ '' => '先',
+ '' => '全',
+ '@' => '共',
+ 'A' => '再',
+ 'B' => '冰',
+ 'C' => '列',
+ 'D' => '刑',
+ 'E' => '划',
+ 'F' => '刎',
+ 'G' => '刖',
+ 'H' => '劣',
+ 'I' => '匈',
+ 'J' => '匡',
+ 'K' => '匠',
+ 'L' => '印',
+ 'M' => '危',
+ 'N' => '吉',
+ 'O' => '吏',
+ 'P' => '同',
+ 'Q' => '吊',
+ 'R' => '吐',
+ 'S' => '吁',
+ 'T' => '吋',
+ 'U' => '各',
+ 'V' => '向',
+ 'W' => '名',
+ 'X' => '合',
+ 'Y' => '吃',
+ 'Z' => '后',
+ '[' => '吆',
+ '\\' => '吒',
+ ']' => '因',
+ '^' => '回',
+ '_' => '囝',
+ '`' => '圳',
+ 'a' => '地',
+ 'b' => '在',
+ 'c' => '圭',
+ 'd' => '圬',
+ 'e' => '圯',
+ 'f' => '圩',
+ 'g' => '夙',
+ 'h' => '多',
+ 'i' => '夷',
+ 'j' => '夸',
+ 'k' => '妄',
+ 'l' => '奸',
+ 'm' => '妃',
+ 'n' => '好',
+ 'o' => '她',
+ 'p' => '如',
+ 'q' => '妁',
+ 'r' => '字',
+ 's' => '存',
+ 't' => '宇',
+ 'u' => '守',
+ 'v' => '宅',
+ 'w' => '安',
+ 'x' => '寺',
+ 'y' => '尖',
+ 'z' => '屹',
+ '{' => '州',
+ '|' => '帆',
+ '}' => '并',
+ '~' => '年',
+ '' => '式',
+ '' => '弛',
+ '' => '忙',
+ '' => '忖',
+ '' => '戎',
+ '' => '戌',
+ '' => '戍',
+ '' => '成',
+ '' => '扣',
+ '' => '扛',
+ '' => '托',
+ '' => '收',
+ '' => '早',
+ '' => '旨',
+ '' => '旬',
+ '' => '旭',
+ '' => '曲',
+ '' => '曳',
+ '' => '有',
+ '' => '朽',
+ '' => '朴',
+ '' => '朱',
+ '' => '朵',
+ '' => '次',
+ '' => '此',
+ '' => '死',
+ '' => '氖',
+ '' => '汝',
+ '' => '汗',
+ '' => '汙',
+ '' => '江',
+ '' => '池',
+ '' => '汐',
+ '' => '汕',
+ '' => '污',
+ '' => '汛',
+ '' => '汍',
+ '' => '汎',
+ '' => '灰',
+ '' => '牟',
+ '' => '牝',
+ '' => '百',
+ '' => '竹',
+ '' => '米',
+ '' => '糸',
+ '' => '缶',
+ '' => '羊',
+ '' => '羽',
+ '' => '老',
+ '' => '考',
+ '' => '而',
+ '' => '耒',
+ '' => '耳',
+ '' => '聿',
+ '' => '肉',
+ '' => '肋',
+ '' => '肌',
+ '' => '臣',
+ '' => '自',
+ '' => '至',
+ '' => '臼',
+ '' => '舌',
+ '' => '舛',
+ '' => '舟',
+ '' => '艮',
+ '' => '色',
+ '' => '艾',
+ '' => '虫',
+ '' => '血',
+ '' => '行',
+ '' => '衣',
+ '' => '西',
+ '' => '阡',
+ '' => '串',
+ '' => '亨',
+ '' => '位',
+ '' => '住',
+ '' => '佇',
+ '' => '佗',
+ '' => '佞',
+ '' => '伴',
+ '' => '佛',
+ '' => '何',
+ '' => '估',
+ '' => '佐',
+ '' => '佑',
+ '' => '伽',
+ '' => '伺',
+ '' => '伸',
+ '' => '佃',
+ '' => '佔',
+ '' => '似',
+ '' => '但',
+ '' => '佣',
+ '@' => '作',
+ 'A' => '你',
+ 'B' => '伯',
+ 'C' => '低',
+ 'D' => '伶',
+ 'E' => '余',
+ 'F' => '佝',
+ 'G' => '佈',
+ 'H' => '佚',
+ 'I' => '兌',
+ 'J' => '克',
+ 'K' => '免',
+ 'L' => '兵',
+ 'M' => '冶',
+ 'N' => '冷',
+ 'O' => '別',
+ 'P' => '判',
+ 'Q' => '利',
+ 'R' => '刪',
+ 'S' => '刨',
+ 'T' => '劫',
+ 'U' => '助',
+ 'V' => '努',
+ 'W' => '劬',
+ 'X' => '匣',
+ 'Y' => '即',
+ 'Z' => '卵',
+ '[' => '吝',
+ '\\' => '吭',
+ ']' => '吞',
+ '^' => '吾',
+ '_' => '否',
+ '`' => '呎',
+ 'a' => '吧',
+ 'b' => '呆',
+ 'c' => '呃',
+ 'd' => '吳',
+ 'e' => '呈',
+ 'f' => '呂',
+ 'g' => '君',
+ 'h' => '吩',
+ 'i' => '告',
+ 'j' => '吹',
+ 'k' => '吻',
+ 'l' => '吸',
+ 'm' => '吮',
+ 'n' => '吵',
+ 'o' => '吶',
+ 'p' => '吠',
+ 'q' => '吼',
+ 'r' => '呀',
+ 's' => '吱',
+ 't' => '含',
+ 'u' => '吟',
+ 'v' => '听',
+ 'w' => '囪',
+ 'x' => '困',
+ 'y' => '囤',
+ 'z' => '囫',
+ '{' => '坊',
+ '|' => '坑',
+ '}' => '址',
+ '~' => '坍',
+ '' => '均',
+ '' => '坎',
+ '' => '圾',
+ '' => '坐',
+ '' => '坏',
+ '' => '圻',
+ '' => '壯',
+ '' => '夾',
+ '' => '妝',
+ '' => '妒',
+ '' => '妨',
+ '' => '妞',
+ '' => '妣',
+ '' => '妙',
+ '' => '妖',
+ '' => '妍',
+ '' => '妤',
+ '' => '妓',
+ '' => '妊',
+ '' => '妥',
+ '' => '孝',
+ '' => '孜',
+ '' => '孚',
+ '' => '孛',
+ '' => '完',
+ '' => '宋',
+ '' => '宏',
+ '' => '尬',
+ '' => '局',
+ '' => '屁',
+ '' => '尿',
+ '' => '尾',
+ '' => '岐',
+ '' => '岑',
+ '' => '岔',
+ '' => '岌',
+ '' => '巫',
+ '' => '希',
+ '' => '序',
+ '' => '庇',
+ '' => '床',
+ '' => '廷',
+ '' => '弄',
+ '' => '弟',
+ '' => '彤',
+ '' => '形',
+ '' => '彷',
+ '' => '役',
+ '' => '忘',
+ '' => '忌',
+ '' => '志',
+ '' => '忍',
+ '' => '忱',
+ '' => '快',
+ '' => '忸',
+ '' => '忪',
+ '' => '戒',
+ '' => '我',
+ '' => '抄',
+ '' => '抗',
+ '' => '抖',
+ '' => '技',
+ '' => '扶',
+ '' => '抉',
+ '' => '扭',
+ '' => '把',
+ '' => '扼',
+ '' => '找',
+ '' => '批',
+ '' => '扳',
+ '' => '抒',
+ '' => '扯',
+ '' => '折',
+ '' => '扮',
+ '' => '投',
+ '' => '抓',
+ '' => '抑',
+ '' => '抆',
+ '' => '改',
+ '' => '攻',
+ '' => '攸',
+ '' => '旱',
+ '' => '更',
+ '' => '束',
+ '' => '李',
+ '' => '杏',
+ '' => '材',
+ '' => '村',
+ '' => '杜',
+ '' => '杖',
+ '' => '杞',
+ '' => '杉',
+ '' => '杆',
+ '' => '杠',
+ '@' => '杓',
+ 'A' => '杗',
+ 'B' => '步',
+ 'C' => '每',
+ 'D' => '求',
+ 'E' => '汞',
+ 'F' => '沙',
+ 'G' => '沁',
+ 'H' => '沈',
+ 'I' => '沉',
+ 'J' => '沅',
+ 'K' => '沛',
+ 'L' => '汪',
+ 'M' => '決',
+ 'N' => '沐',
+ 'O' => '汰',
+ 'P' => '沌',
+ 'Q' => '汨',
+ 'R' => '沖',
+ 'S' => '沒',
+ 'T' => '汽',
+ 'U' => '沃',
+ 'V' => '汲',
+ 'W' => '汾',
+ 'X' => '汴',
+ 'Y' => '沆',
+ 'Z' => '汶',
+ '[' => '沍',
+ '\\' => '沔',
+ ']' => '沘',
+ '^' => '沂',
+ '_' => '灶',
+ '`' => '灼',
+ 'a' => '災',
+ 'b' => '灸',
+ 'c' => '牢',
+ 'd' => '牡',
+ 'e' => '牠',
+ 'f' => '狄',
+ 'g' => '狂',
+ 'h' => '玖',
+ 'i' => '甬',
+ 'j' => '甫',
+ 'k' => '男',
+ 'l' => '甸',
+ 'm' => '皂',
+ 'n' => '盯',
+ 'o' => '矣',
+ 'p' => '私',
+ 'q' => '秀',
+ 'r' => '禿',
+ 's' => '究',
+ 't' => '系',
+ 'u' => '罕',
+ 'v' => '肖',
+ 'w' => '肓',
+ 'x' => '肝',
+ 'y' => '肘',
+ 'z' => '肛',
+ '{' => '肚',
+ '|' => '育',
+ '}' => '良',
+ '~' => '芒',
+ '' => '芋',
+ '' => '芍',
+ '' => '見',
+ '' => '角',
+ '' => '言',
+ '' => '谷',
+ '' => '豆',
+ '' => '豕',
+ '' => '貝',
+ '' => '赤',
+ '' => '走',
+ '' => '足',
+ '' => '身',
+ '' => '車',
+ '' => '辛',
+ '' => '辰',
+ '' => '迂',
+ '' => '迆',
+ '' => '迅',
+ '' => '迄',
+ '' => '巡',
+ '' => '邑',
+ '' => '邢',
+ '' => '邪',
+ '' => '邦',
+ '' => '那',
+ '' => '酉',
+ '' => '釆',
+ '' => '里',
+ '' => '防',
+ '' => '阮',
+ '' => '阱',
+ '' => '阪',
+ '' => '阬',
+ '' => '並',
+ '' => '乖',
+ '' => '乳',
+ '' => '事',
+ '' => '些',
+ '' => '亞',
+ '' => '享',
+ '' => '京',
+ '' => '佯',
+ '' => '依',
+ '' => '侍',
+ '' => '佳',
+ '' => '使',
+ '' => '佬',
+ '' => '供',
+ '' => '例',
+ '' => '來',
+ '' => '侃',
+ '' => '佰',
+ '' => '併',
+ '' => '侈',
+ '' => '佩',
+ '' => '佻',
+ '' => '侖',
+ '' => '佾',
+ '' => '侏',
+ '' => '侑',
+ '' => '佺',
+ '' => '兔',
+ '' => '兒',
+ '' => '兕',
+ '' => '兩',
+ '' => '具',
+ '' => '其',
+ '' => '典',
+ '' => '冽',
+ '' => '函',
+ '' => '刻',
+ '' => '券',
+ '' => '刷',
+ '' => '刺',
+ '' => '到',
+ '' => '刮',
+ '' => '制',
+ '' => '剁',
+ '' => '劾',
+ '' => '劻',
+ '' => '卒',
+ '' => '協',
+ '' => '卓',
+ '' => '卑',
+ '' => '卦',
+ '' => '卷',
+ '' => '卸',
+ '' => '卹',
+ '' => '取',
+ '' => '叔',
+ '' => '受',
+ '' => '味',
+ '' => '呵',
+ '@' => '咖',
+ 'A' => '呸',
+ 'B' => '咕',
+ 'C' => '咀',
+ 'D' => '呻',
+ 'E' => '呷',
+ 'F' => '咄',
+ 'G' => '咒',
+ 'H' => '咆',
+ 'I' => '呼',
+ 'J' => '咐',
+ 'K' => '呱',
+ 'L' => '呶',
+ 'M' => '和',
+ 'N' => '咚',
+ 'O' => '呢',
+ 'P' => '周',
+ 'Q' => '咋',
+ 'R' => '命',
+ 'S' => '咎',
+ 'T' => '固',
+ 'U' => '垃',
+ 'V' => '坷',
+ 'W' => '坪',
+ 'X' => '坩',
+ 'Y' => '坡',
+ 'Z' => '坦',
+ '[' => '坤',
+ '\\' => '坼',
+ ']' => '夜',
+ '^' => '奉',
+ '_' => '奇',
+ '`' => '奈',
+ 'a' => '奄',
+ 'b' => '奔',
+ 'c' => '妾',
+ 'd' => '妻',
+ 'e' => '委',
+ 'f' => '妹',
+ 'g' => '妮',
+ 'h' => '姑',
+ 'i' => '姆',
+ 'j' => '姐',
+ 'k' => '姍',
+ 'l' => '始',
+ 'm' => '姓',
+ 'n' => '姊',
+ 'o' => '妯',
+ 'p' => '妳',
+ 'q' => '姒',
+ 'r' => '姅',
+ 's' => '孟',
+ 't' => '孤',
+ 'u' => '季',
+ 'v' => '宗',
+ 'w' => '定',
+ 'x' => '官',
+ 'y' => '宜',
+ 'z' => '宙',
+ '{' => '宛',
+ '|' => '尚',
+ '}' => '屈',
+ '~' => '居',
+ '' => '屆',
+ '' => '岷',
+ '' => '岡',
+ '' => '岸',
+ '' => '岩',
+ '' => '岫',
+ '' => '岱',
+ '' => '岳',
+ '' => '帘',
+ '' => '帚',
+ '' => '帖',
+ '' => '帕',
+ '' => '帛',
+ '' => '帑',
+ '' => '幸',
+ '' => '庚',
+ '' => '店',
+ '' => '府',
+ '' => '底',
+ '' => '庖',
+ '' => '延',
+ '' => '弦',
+ '' => '弧',
+ '' => '弩',
+ '' => '往',
+ '' => '征',
+ '' => '彿',
+ '' => '彼',
+ '' => '忝',
+ '' => '忠',
+ '' => '忽',
+ '' => '念',
+ '' => '忿',
+ '' => '怏',
+ '' => '怔',
+ '' => '怯',
+ '' => '怵',
+ '' => '怖',
+ '' => '怪',
+ '' => '怕',
+ '' => '怡',
+ '' => '性',
+ '' => '怩',
+ '' => '怫',
+ '' => '怛',
+ '' => '或',
+ '' => '戕',
+ '' => '房',
+ '' => '戾',
+ '' => '所',
+ '' => '承',
+ '' => '拉',
+ '' => '拌',
+ '' => '拄',
+ '' => '抿',
+ '' => '拂',
+ '' => '抹',
+ '' => '拒',
+ '' => '招',
+ '' => '披',
+ '' => '拓',
+ '' => '拔',
+ '' => '拋',
+ '' => '拈',
+ '' => '抨',
+ '' => '抽',
+ '' => '押',
+ '' => '拐',
+ '' => '拙',
+ '' => '拇',
+ '' => '拍',
+ '' => '抵',
+ '' => '拚',
+ '' => '抱',
+ '' => '拘',
+ '' => '拖',
+ '' => '拗',
+ '' => '拆',
+ '' => '抬',
+ '' => '拎',
+ '' => '放',
+ '' => '斧',
+ '' => '於',
+ '' => '旺',
+ '' => '昔',
+ '' => '易',
+ '' => '昌',
+ '' => '昆',
+ '' => '昂',
+ '' => '明',
+ '' => '昀',
+ '' => '昏',
+ '' => '昕',
+ '' => '昊',
+ '@' => '昇',
+ 'A' => '服',
+ 'B' => '朋',
+ 'C' => '杭',
+ 'D' => '枋',
+ 'E' => '枕',
+ 'F' => '東',
+ 'G' => '果',
+ 'H' => '杳',
+ 'I' => '杷',
+ 'J' => '枇',
+ 'K' => '枝',
+ 'L' => '林',
+ 'M' => '杯',
+ 'N' => '杰',
+ 'O' => '板',
+ 'P' => '枉',
+ 'Q' => '松',
+ 'R' => '析',
+ 'S' => '杵',
+ 'T' => '枚',
+ 'U' => '枓',
+ 'V' => '杼',
+ 'W' => '杪',
+ 'X' => '杲',
+ 'Y' => '欣',
+ 'Z' => '武',
+ '[' => '歧',
+ '\\' => '歿',
+ ']' => '氓',
+ '^' => '氛',
+ '_' => '泣',
+ '`' => '注',
+ 'a' => '泳',
+ 'b' => '沱',
+ 'c' => '泌',
+ 'd' => '泥',
+ 'e' => '河',
+ 'f' => '沽',
+ 'g' => '沾',
+ 'h' => '沼',
+ 'i' => '波',
+ 'j' => '沫',
+ 'k' => '法',
+ 'l' => '泓',
+ 'm' => '沸',
+ 'n' => '泄',
+ 'o' => '油',
+ 'p' => '況',
+ 'q' => '沮',
+ 'r' => '泗',
+ 's' => '泅',
+ 't' => '泱',
+ 'u' => '沿',
+ 'v' => '治',
+ 'w' => '泡',
+ 'x' => '泛',
+ 'y' => '泊',
+ 'z' => '沬',
+ '{' => '泯',
+ '|' => '泜',
+ '}' => '泖',
+ '~' => '泠',
+ '' => '炕',
+ '' => '炎',
+ '' => '炒',
+ '' => '炊',
+ '' => '炙',
+ '' => '爬',
+ '' => '爭',
+ '' => '爸',
+ '' => '版',
+ '' => '牧',
+ '' => '物',
+ '' => '狀',
+ '' => '狎',
+ '' => '狙',
+ '' => '狗',
+ '' => '狐',
+ '' => '玩',
+ '' => '玨',
+ '' => '玟',
+ '' => '玫',
+ '' => '玥',
+ '' => '甽',
+ '' => '疝',
+ '' => '疙',
+ '' => '疚',
+ '' => '的',
+ '' => '盂',
+ '' => '盲',
+ '' => '直',
+ '' => '知',
+ '' => '矽',
+ '' => '社',
+ '' => '祀',
+ '' => '祁',
+ '' => '秉',
+ '' => '秈',
+ '' => '空',
+ '' => '穹',
+ '' => '竺',
+ '' => '糾',
+ '' => '罔',
+ '' => '羌',
+ '' => '羋',
+ '' => '者',
+ '' => '肺',
+ '' => '肥',
+ '' => '肢',
+ '' => '肱',
+ '' => '股',
+ '' => '肫',
+ '' => '肩',
+ '' => '肴',
+ '' => '肪',
+ '' => '肯',
+ '' => '臥',
+ '' => '臾',
+ '' => '舍',
+ '' => '芳',
+ '' => '芝',
+ '' => '芙',
+ '' => '芭',
+ '' => '芽',
+ '' => '芟',
+ '' => '芹',
+ '' => '花',
+ '' => '芬',
+ '' => '芥',
+ '' => '芯',
+ '' => '芸',
+ '' => '芣',
+ '' => '芰',
+ '' => '芾',
+ '' => '芷',
+ '' => '虎',
+ '' => '虱',
+ '' => '初',
+ '' => '表',
+ '' => '軋',
+ '' => '迎',
+ '' => '返',
+ '' => '近',
+ '' => '邵',
+ '' => '邸',
+ '' => '邱',
+ '' => '邶',
+ '' => '采',
+ '' => '金',
+ '' => '長',
+ '' => '門',
+ '' => '阜',
+ '' => '陀',
+ '' => '阿',
+ '' => '阻',
+ '' => '附',
+ '@' => '陂',
+ 'A' => '隹',
+ 'B' => '雨',
+ 'C' => '青',
+ 'D' => '非',
+ 'E' => '亟',
+ 'F' => '亭',
+ 'G' => '亮',
+ 'H' => '信',
+ 'I' => '侵',
+ 'J' => '侯',
+ 'K' => '便',
+ 'L' => '俠',
+ 'M' => '俑',
+ 'N' => '俏',
+ 'O' => '保',
+ 'P' => '促',
+ 'Q' => '侶',
+ 'R' => '俘',
+ 'S' => '俟',
+ 'T' => '俊',
+ 'U' => '俗',
+ 'V' => '侮',
+ 'W' => '俐',
+ 'X' => '俄',
+ 'Y' => '係',
+ 'Z' => '俚',
+ '[' => '俎',
+ '\\' => '俞',
+ ']' => '侷',
+ '^' => '兗',
+ '_' => '冒',
+ '`' => '冑',
+ 'a' => '冠',
+ 'b' => '剎',
+ 'c' => '剃',
+ 'd' => '削',
+ 'e' => '前',
+ 'f' => '剌',
+ 'g' => '剋',
+ 'h' => '則',
+ 'i' => '勇',
+ 'j' => '勉',
+ 'k' => '勃',
+ 'l' => '勁',
+ 'm' => '匍',
+ 'n' => '南',
+ 'o' => '卻',
+ 'p' => '厚',
+ 'q' => '叛',
+ 'r' => '咬',
+ 's' => '哀',
+ 't' => '咨',
+ 'u' => '哎',
+ 'v' => '哉',
+ 'w' => '咸',
+ 'x' => '咦',
+ 'y' => '咳',
+ 'z' => '哇',
+ '{' => '哂',
+ '|' => '咽',
+ '}' => '咪',
+ '~' => '品',
+ '' => '哄',
+ '' => '哈',
+ '' => '咯',
+ '' => '咫',
+ '' => '咱',
+ '' => '咻',
+ '' => '咩',
+ '' => '咧',
+ '' => '咿',
+ '' => '囿',
+ '' => '垂',
+ '' => '型',
+ '' => '垠',
+ '' => '垣',
+ '' => '垢',
+ '' => '城',
+ '' => '垮',
+ '' => '垓',
+ '' => '奕',
+ '' => '契',
+ '' => '奏',
+ '' => '奎',
+ '' => '奐',
+ '' => '姜',
+ '' => '姘',
+ '' => '姿',
+ '' => '姣',
+ '' => '姨',
+ '' => '娃',
+ '' => '姥',
+ '' => '姪',
+ '' => '姚',
+ '' => '姦',
+ '' => '威',
+ '' => '姻',
+ '' => '孩',
+ '' => '宣',
+ '' => '宦',
+ '' => '室',
+ '' => '客',
+ '' => '宥',
+ '' => '封',
+ '' => '屎',
+ '' => '屏',
+ '' => '屍',
+ '' => '屋',
+ '' => '峙',
+ '' => '峒',
+ '' => '巷',
+ '' => '帝',
+ '' => '帥',
+ '' => '帟',
+ '' => '幽',
+ '' => '庠',
+ '' => '度',
+ '' => '建',
+ '' => '弈',
+ '' => '弭',
+ '' => '彥',
+ '' => '很',
+ '' => '待',
+ '' => '徊',
+ '' => '律',
+ '' => '徇',
+ '' => '後',
+ '' => '徉',
+ '' => '怒',
+ '' => '思',
+ '' => '怠',
+ '' => '急',
+ '' => '怎',
+ '' => '怨',
+ '' => '恍',
+ '' => '恰',
+ '' => '恨',
+ '' => '恢',
+ '' => '恆',
+ '' => '恃',
+ '' => '恬',
+ '' => '恫',
+ '' => '恪',
+ '' => '恤',
+ '' => '扁',
+ '' => '拜',
+ '' => '挖',
+ '' => '按',
+ '' => '拼',
+ '' => '拭',
+ '' => '持',
+ '' => '拮',
+ '' => '拽',
+ '' => '指',
+ '' => '拱',
+ '' => '拷',
+ '@' => '拯',
+ 'A' => '括',
+ 'B' => '拾',
+ 'C' => '拴',
+ 'D' => '挑',
+ 'E' => '挂',
+ 'F' => '政',
+ 'G' => '故',
+ 'H' => '斫',
+ 'I' => '施',
+ 'J' => '既',
+ 'K' => '春',
+ 'L' => '昭',
+ 'M' => '映',
+ 'N' => '昧',
+ 'O' => '是',
+ 'P' => '星',
+ 'Q' => '昨',
+ 'R' => '昱',
+ 'S' => '昤',
+ 'T' => '曷',
+ 'U' => '柿',
+ 'V' => '染',
+ 'W' => '柱',
+ 'X' => '柔',
+ 'Y' => '某',
+ 'Z' => '柬',
+ '[' => '架',
+ '\\' => '枯',
+ ']' => '柵',
+ '^' => '柩',
+ '_' => '柯',
+ '`' => '柄',
+ 'a' => '柑',
+ 'b' => '枴',
+ 'c' => '柚',
+ 'd' => '查',
+ 'e' => '枸',
+ 'f' => '柏',
+ 'g' => '柞',
+ 'h' => '柳',
+ 'i' => '枰',
+ 'j' => '柙',
+ 'k' => '柢',
+ 'l' => '柝',
+ 'm' => '柒',
+ 'n' => '歪',
+ 'o' => '殃',
+ 'p' => '殆',
+ 'q' => '段',
+ 'r' => '毒',
+ 's' => '毗',
+ 't' => '氟',
+ 'u' => '泉',
+ 'v' => '洋',
+ 'w' => '洲',
+ 'x' => '洪',
+ 'y' => '流',
+ 'z' => '津',
+ '{' => '洌',
+ '|' => '洱',
+ '}' => '洞',
+ '~' => '洗',
+ '' => '活',
+ '' => '洽',
+ '' => '派',
+ '' => '洶',
+ '' => '洛',
+ '' => '泵',
+ '' => '洹',
+ '' => '洧',
+ '' => '洸',
+ '' => '洩',
+ '' => '洮',
+ '' => '洵',
+ '' => '洎',
+ '' => '洫',
+ '' => '炫',
+ '' => '為',
+ '' => '炳',
+ '' => '炬',
+ '' => '炯',
+ '' => '炭',
+ '' => '炸',
+ '' => '炮',
+ '' => '炤',
+ '' => '爰',
+ '' => '牲',
+ '' => '牯',
+ '' => '牴',
+ '' => '狩',
+ '' => '狠',
+ '' => '狡',
+ '' => '玷',
+ '' => '珊',
+ '' => '玻',
+ '' => '玲',
+ '' => '珍',
+ '' => '珀',
+ '' => '玳',
+ '' => '甚',
+ '' => '甭',
+ '' => '畏',
+ '' => '界',
+ '' => '畎',
+ '' => '畋',
+ '' => '疫',
+ '' => '疤',
+ '' => '疥',
+ '' => '疢',
+ '' => '疣',
+ '' => '癸',
+ '' => '皆',
+ '' => '皇',
+ '' => '皈',
+ '' => '盈',
+ '' => '盆',
+ '' => '盃',
+ '' => '盅',
+ '' => '省',
+ '' => '盹',
+ '' => '相',
+ '' => '眉',
+ '' => '看',
+ '' => '盾',
+ '' => '盼',
+ '' => '眇',
+ '' => '矜',
+ '' => '砂',
+ '' => '研',
+ '' => '砌',
+ '' => '砍',
+ '' => '祆',
+ '' => '祉',
+ '' => '祈',
+ '' => '祇',
+ '' => '禹',
+ '' => '禺',
+ '' => '科',
+ '' => '秒',
+ '' => '秋',
+ '' => '穿',
+ '' => '突',
+ '' => '竿',
+ '' => '竽',
+ '' => '籽',
+ '' => '紂',
+ '' => '紅',
+ '' => '紀',
+ '' => '紉',
+ '' => '紇',
+ '' => '約',
+ '' => '紆',
+ '' => '缸',
+ '' => '美',
+ '' => '羿',
+ '' => '耄',
+ '@' => '耐',
+ 'A' => '耍',
+ 'B' => '耑',
+ 'C' => '耶',
+ 'D' => '胖',
+ 'E' => '胥',
+ 'F' => '胚',
+ 'G' => '胃',
+ 'H' => '胄',
+ 'I' => '背',
+ 'J' => '胡',
+ 'K' => '胛',
+ 'L' => '胎',
+ 'M' => '胞',
+ 'N' => '胤',
+ 'O' => '胝',
+ 'P' => '致',
+ 'Q' => '舢',
+ 'R' => '苧',
+ 'S' => '范',
+ 'T' => '茅',
+ 'U' => '苣',
+ 'V' => '苛',
+ 'W' => '苦',
+ 'X' => '茄',
+ 'Y' => '若',
+ 'Z' => '茂',
+ '[' => '茉',
+ '\\' => '苒',
+ ']' => '苗',
+ '^' => '英',
+ '_' => '茁',
+ '`' => '苜',
+ 'a' => '苔',
+ 'b' => '苑',
+ 'c' => '苞',
+ 'd' => '苓',
+ 'e' => '苟',
+ 'f' => '苯',
+ 'g' => '茆',
+ 'h' => '虐',
+ 'i' => '虹',
+ 'j' => '虻',
+ 'k' => '虺',
+ 'l' => '衍',
+ 'm' => '衫',
+ 'n' => '要',
+ 'o' => '觔',
+ 'p' => '計',
+ 'q' => '訂',
+ 'r' => '訃',
+ 's' => '貞',
+ 't' => '負',
+ 'u' => '赴',
+ 'v' => '赳',
+ 'w' => '趴',
+ 'x' => '軍',
+ 'y' => '軌',
+ 'z' => '述',
+ '{' => '迦',
+ '|' => '迢',
+ '}' => '迪',
+ '~' => '迥',
+ '' => '迭',
+ '' => '迫',
+ '' => '迤',
+ '' => '迨',
+ '' => '郊',
+ '' => '郎',
+ '' => '郁',
+ '' => '郃',
+ '' => '酋',
+ '' => '酊',
+ '' => '重',
+ '' => '閂',
+ '' => '限',
+ '' => '陋',
+ '' => '陌',
+ '' => '降',
+ '' => '面',
+ '' => '革',
+ '' => '韋',
+ '' => '韭',
+ '' => '音',
+ '' => '頁',
+ '' => '風',
+ '' => '飛',
+ '' => '食',
+ '' => '首',
+ '' => '香',
+ '' => '乘',
+ '' => '亳',
+ '' => '倌',
+ '' => '倍',
+ '' => '倣',
+ '' => '俯',
+ '' => '倦',
+ '' => '倥',
+ '' => '俸',
+ '' => '倩',
+ '' => '倖',
+ '' => '倆',
+ '' => '值',
+ '' => '借',
+ '' => '倚',
+ '' => '倒',
+ '' => '們',
+ '' => '俺',
+ '' => '倀',
+ '' => '倔',
+ '' => '倨',
+ '' => '俱',
+ '' => '倡',
+ '' => '個',
+ '' => '候',
+ '' => '倘',
+ '' => '俳',
+ '' => '修',
+ '' => '倭',
+ '' => '倪',
+ '' => '俾',
+ '' => '倫',
+ '' => '倉',
+ '' => '兼',
+ '' => '冤',
+ '' => '冥',
+ '' => '冢',
+ '' => '凍',
+ '' => '凌',
+ '' => '准',
+ '' => '凋',
+ '' => '剖',
+ '' => '剜',
+ '' => '剔',
+ '' => '剛',
+ '' => '剝',
+ '' => '匪',
+ '' => '卿',
+ '' => '原',
+ '' => '厝',
+ '' => '叟',
+ '' => '哨',
+ '' => '唐',
+ '' => '唁',
+ '' => '唷',
+ '' => '哼',
+ '' => '哥',
+ '' => '哲',
+ '' => '唆',
+ '' => '哺',
+ '' => '唔',
+ '' => '哩',
+ '' => '哭',
+ '' => '員',
+ '' => '唉',
+ '' => '哮',
+ '' => '哪',
+ '@' => '哦',
+ 'A' => '唧',
+ 'B' => '唇',
+ 'C' => '哽',
+ 'D' => '唏',
+ 'E' => '圃',
+ 'F' => '圄',
+ 'G' => '埂',
+ 'H' => '埔',
+ 'I' => '埋',
+ 'J' => '埃',
+ 'K' => '堉',
+ 'L' => '夏',
+ 'M' => '套',
+ 'N' => '奘',
+ 'O' => '奚',
+ 'P' => '娑',
+ 'Q' => '娘',
+ 'R' => '娜',
+ 'S' => '娟',
+ 'T' => '娛',
+ 'U' => '娓',
+ 'V' => '姬',
+ 'W' => '娠',
+ 'X' => '娣',
+ 'Y' => '娩',
+ 'Z' => '娥',
+ '[' => '娌',
+ '\\' => '娉',
+ ']' => '孫',
+ '^' => '屘',
+ '_' => '宰',
+ '`' => '害',
+ 'a' => '家',
+ 'b' => '宴',
+ 'c' => '宮',
+ 'd' => '宵',
+ 'e' => '容',
+ 'f' => '宸',
+ 'g' => '射',
+ 'h' => '屑',
+ 'i' => '展',
+ 'j' => '屐',
+ 'k' => '峭',
+ 'l' => '峽',
+ 'm' => '峻',
+ 'n' => '峪',
+ 'o' => '峨',
+ 'p' => '峰',
+ 'q' => '島',
+ 'r' => '崁',
+ 's' => '峴',
+ 't' => '差',
+ 'u' => '席',
+ 'v' => '師',
+ 'w' => '庫',
+ 'x' => '庭',
+ 'y' => '座',
+ 'z' => '弱',
+ '{' => '徒',
+ '|' => '徑',
+ '}' => '徐',
+ '~' => '恙',
+ '' => '恣',
+ '' => '恥',
+ '' => '恐',
+ '' => '恕',
+ '' => '恭',
+ '' => '恩',
+ '' => '息',
+ '' => '悄',
+ '' => '悟',
+ '' => '悚',
+ '' => '悍',
+ '' => '悔',
+ '' => '悌',
+ '' => '悅',
+ '' => '悖',
+ '' => '扇',
+ '' => '拳',
+ '' => '挈',
+ '' => '拿',
+ '' => '捎',
+ '' => '挾',
+ '' => '振',
+ '' => '捕',
+ '' => '捂',
+ '' => '捆',
+ '' => '捏',
+ '' => '捉',
+ '' => '挺',
+ '' => '捐',
+ '' => '挽',
+ '' => '挪',
+ '' => '挫',
+ '' => '挨',
+ '' => '捍',
+ '' => '捌',
+ '' => '效',
+ '' => '敉',
+ '' => '料',
+ '' => '旁',
+ '' => '旅',
+ '' => '時',
+ '' => '晉',
+ '' => '晏',
+ '' => '晃',
+ '' => '晒',
+ '' => '晌',
+ '' => '晅',
+ '' => '晁',
+ '' => '書',
+ '' => '朔',
+ '' => '朕',
+ '' => '朗',
+ '' => '校',
+ '' => '核',
+ '' => '案',
+ '' => '框',
+ '' => '桓',
+ '' => '根',
+ '' => '桂',
+ '' => '桔',
+ '' => '栩',
+ '' => '梳',
+ '' => '栗',
+ '' => '桌',
+ '' => '桑',
+ '' => '栽',
+ '' => '柴',
+ '' => '桐',
+ '' => '桀',
+ '' => '格',
+ '' => '桃',
+ '' => '株',
+ '' => '桅',
+ '' => '栓',
+ '' => '栘',
+ '' => '桁',
+ '' => '殊',
+ '' => '殉',
+ '' => '殷',
+ '' => '氣',
+ '' => '氧',
+ '' => '氨',
+ '' => '氦',
+ '' => '氤',
+ '' => '泰',
+ '' => '浪',
+ '' => '涕',
+ '' => '消',
+ '' => '涇',
+ '' => '浦',
+ '' => '浸',
+ '' => '海',
+ '' => '浙',
+ '' => '涓',
+ '@' => '浬',
+ 'A' => '涉',
+ 'B' => '浮',
+ 'C' => '浚',
+ 'D' => '浴',
+ 'E' => '浩',
+ 'F' => '涌',
+ 'G' => '涊',
+ 'H' => '浹',
+ 'I' => '涅',
+ 'J' => '浥',
+ 'K' => '涔',
+ 'L' => '烊',
+ 'M' => '烘',
+ 'N' => '烤',
+ 'O' => '烙',
+ 'P' => '烈',
+ 'Q' => '烏',
+ 'R' => '爹',
+ 'S' => '特',
+ 'T' => '狼',
+ 'U' => '狹',
+ 'V' => '狽',
+ 'W' => '狸',
+ 'X' => '狷',
+ 'Y' => '玆',
+ 'Z' => '班',
+ '[' => '琉',
+ '\\' => '珮',
+ ']' => '珠',
+ '^' => '珪',
+ '_' => '珞',
+ '`' => '畔',
+ 'a' => '畝',
+ 'b' => '畜',
+ 'c' => '畚',
+ 'd' => '留',
+ 'e' => '疾',
+ 'f' => '病',
+ 'g' => '症',
+ 'h' => '疲',
+ 'i' => '疳',
+ 'j' => '疽',
+ 'k' => '疼',
+ 'l' => '疹',
+ 'm' => '痂',
+ 'n' => '疸',
+ 'o' => '皋',
+ 'p' => '皰',
+ 'q' => '益',
+ 'r' => '盍',
+ 's' => '盎',
+ 't' => '眩',
+ 'u' => '真',
+ 'v' => '眠',
+ 'w' => '眨',
+ 'x' => '矩',
+ 'y' => '砰',
+ 'z' => '砧',
+ '{' => '砸',
+ '|' => '砝',
+ '}' => '破',
+ '~' => '砷',
+ '' => '砥',
+ '' => '砭',
+ '' => '砠',
+ '' => '砟',
+ '' => '砲',
+ '' => '祕',
+ '' => '祐',
+ '' => '祠',
+ '' => '祟',
+ '' => '祖',
+ '' => '神',
+ '' => '祝',
+ '' => '祗',
+ '' => '祚',
+ '' => '秤',
+ '' => '秣',
+ '' => '秧',
+ '' => '租',
+ '' => '秦',
+ '' => '秩',
+ '' => '秘',
+ '' => '窄',
+ '' => '窈',
+ '' => '站',
+ '' => '笆',
+ '' => '笑',
+ '' => '粉',
+ '' => '紡',
+ '' => '紗',
+ '' => '紋',
+ '' => '紊',
+ '' => '素',
+ '' => '索',
+ '' => '純',
+ '' => '紐',
+ '' => '紕',
+ '' => '級',
+ '' => '紜',
+ '' => '納',
+ '' => '紙',
+ '' => '紛',
+ '' => '缺',
+ '' => '罟',
+ '' => '羔',
+ '' => '翅',
+ '' => '翁',
+ '' => '耆',
+ '' => '耘',
+ '' => '耕',
+ '' => '耙',
+ '' => '耗',
+ '' => '耽',
+ '' => '耿',
+ '' => '胱',
+ '' => '脂',
+ '' => '胰',
+ '' => '脅',
+ '' => '胭',
+ '' => '胴',
+ '' => '脆',
+ '' => '胸',
+ '' => '胳',
+ '' => '脈',
+ '' => '能',
+ '' => '脊',
+ '' => '胼',
+ '' => '胯',
+ '' => '臭',
+ '' => '臬',
+ '' => '舀',
+ '' => '舐',
+ '' => '航',
+ '' => '舫',
+ '' => '舨',
+ '' => '般',
+ '' => '芻',
+ '' => '茫',
+ '' => '荒',
+ '' => '荔',
+ '' => '荊',
+ '' => '茸',
+ '' => '荐',
+ '' => '草',
+ '' => '茵',
+ '' => '茴',
+ '' => '荏',
+ '' => '茲',
+ '' => '茹',
+ '' => '茶',
+ '' => '茗',
+ '' => '荀',
+ '' => '茱',
+ '' => '茨',
+ '' => '荃',
+ '@' => '虔',
+ 'A' => '蚊',
+ 'B' => '蚪',
+ 'C' => '蚓',
+ 'D' => '蚤',
+ 'E' => '蚩',
+ 'F' => '蚌',
+ 'G' => '蚣',
+ 'H' => '蚜',
+ 'I' => '衰',
+ 'J' => '衷',
+ 'K' => '袁',
+ 'L' => '袂',
+ 'M' => '衽',
+ 'N' => '衹',
+ 'O' => '記',
+ 'P' => '訐',
+ 'Q' => '討',
+ 'R' => '訌',
+ 'S' => '訕',
+ 'T' => '訊',
+ 'U' => '託',
+ 'V' => '訓',
+ 'W' => '訖',
+ 'X' => '訏',
+ 'Y' => '訑',
+ 'Z' => '豈',
+ '[' => '豺',
+ '\\' => '豹',
+ ']' => '財',
+ '^' => '貢',
+ '_' => '起',
+ '`' => '躬',
+ 'a' => '軒',
+ 'b' => '軔',
+ 'c' => '軏',
+ 'd' => '辱',
+ 'e' => '送',
+ 'f' => '逆',
+ 'g' => '迷',
+ 'h' => '退',
+ 'i' => '迺',
+ 'j' => '迴',
+ 'k' => '逃',
+ 'l' => '追',
+ 'm' => '逅',
+ 'n' => '迸',
+ 'o' => '邕',
+ 'p' => '郡',
+ 'q' => '郝',
+ 'r' => '郢',
+ 's' => '酒',
+ 't' => '配',
+ 'u' => '酌',
+ 'v' => '釘',
+ 'w' => '針',
+ 'x' => '釗',
+ 'y' => '釜',
+ 'z' => '釙',
+ '{' => '閃',
+ '|' => '院',
+ '}' => '陣',
+ '~' => '陡',
+ '' => '陛',
+ '' => '陝',
+ '' => '除',
+ '' => '陘',
+ '' => '陞',
+ '' => '隻',
+ '' => '飢',
+ '' => '馬',
+ '' => '骨',
+ '' => '高',
+ '' => '鬥',
+ '' => '鬲',
+ '' => '鬼',
+ '' => '乾',
+ '' => '偺',
+ '' => '偽',
+ '' => '停',
+ '' => '假',
+ '' => '偃',
+ '' => '偌',
+ '' => '做',
+ '' => '偉',
+ '' => '健',
+ '' => '偶',
+ '' => '偎',
+ '' => '偕',
+ '' => '偵',
+ '' => '側',
+ '' => '偷',
+ '' => '偏',
+ '' => '倏',
+ '' => '偯',
+ '' => '偭',
+ '' => '兜',
+ '' => '冕',
+ '' => '凰',
+ '' => '剪',
+ '' => '副',
+ '' => '勒',
+ '' => '務',
+ '' => '勘',
+ '' => '動',
+ '' => '匐',
+ '' => '匏',
+ '' => '匙',
+ '' => '匿',
+ '' => '區',
+ '' => '匾',
+ '' => '參',
+ '' => '曼',
+ '' => '商',
+ '' => '啪',
+ '' => '啦',
+ '' => '啄',
+ '' => '啞',
+ '' => '啡',
+ '' => '啃',
+ '' => '啊',
+ '' => '唱',
+ '' => '啖',
+ '' => '問',
+ '' => '啕',
+ '' => '唯',
+ '' => '啤',
+ '' => '唸',
+ '' => '售',
+ '' => '啜',
+ '' => '唬',
+ '' => '啣',
+ '' => '唳',
+ '' => '啁',
+ '' => '啗',
+ '' => '圈',
+ '' => '國',
+ '' => '圉',
+ '' => '域',
+ '' => '堅',
+ '' => '堊',
+ '' => '堆',
+ '' => '埠',
+ '' => '埤',
+ '' => '基',
+ '' => '堂',
+ '' => '堵',
+ '' => '執',
+ '' => '培',
+ '' => '夠',
+ '' => '奢',
+ '' => '娶',
+ '' => '婁',
+ '' => '婉',
+ '' => '婦',
+ '' => '婪',
+ '' => '婀',
+ '@' => '娼',
+ 'A' => '婢',
+ 'B' => '婚',
+ 'C' => '婆',
+ 'D' => '婊',
+ 'E' => '孰',
+ 'F' => '寇',
+ 'G' => '寅',
+ 'H' => '寄',
+ 'I' => '寂',
+ 'J' => '宿',
+ 'K' => '密',
+ 'L' => '尉',
+ 'M' => '專',
+ 'N' => '將',
+ 'O' => '屠',
+ 'P' => '屜',
+ 'Q' => '屝',
+ 'R' => '崇',
+ 'S' => '崆',
+ 'T' => '崎',
+ 'U' => '崛',
+ 'V' => '崖',
+ 'W' => '崢',
+ 'X' => '崑',
+ 'Y' => '崩',
+ 'Z' => '崔',
+ '[' => '崙',
+ '\\' => '崤',
+ ']' => '崧',
+ '^' => '崗',
+ '_' => '巢',
+ '`' => '常',
+ 'a' => '帶',
+ 'b' => '帳',
+ 'c' => '帷',
+ 'd' => '康',
+ 'e' => '庸',
+ 'f' => '庶',
+ 'g' => '庵',
+ 'h' => '庾',
+ 'i' => '張',
+ 'j' => '強',
+ 'k' => '彗',
+ 'l' => '彬',
+ 'm' => '彩',
+ 'n' => '彫',
+ 'o' => '得',
+ 'p' => '徙',
+ 'q' => '從',
+ 'r' => '徘',
+ 's' => '御',
+ 't' => '徠',
+ 'u' => '徜',
+ 'v' => '恿',
+ 'w' => '患',
+ 'x' => '悉',
+ 'y' => '悠',
+ 'z' => '您',
+ '{' => '惋',
+ '|' => '悴',
+ '}' => '惦',
+ '~' => '悽',
+ '' => '情',
+ '' => '悻',
+ '' => '悵',
+ '' => '惜',
+ '' => '悼',
+ '' => '惘',
+ '' => '惕',
+ '' => '惆',
+ '' => '惟',
+ '' => '悸',
+ '' => '惚',
+ '' => '惇',
+ '' => '戚',
+ '' => '戛',
+ '' => '扈',
+ '' => '掠',
+ '' => '控',
+ '' => '捲',
+ '' => '掖',
+ '' => '探',
+ '' => '接',
+ '' => '捷',
+ '' => '捧',
+ '' => '掘',
+ '' => '措',
+ '' => '捱',
+ '' => '掩',
+ '' => '掉',
+ '' => '掃',
+ '' => '掛',
+ '' => '捫',
+ '' => '推',
+ '' => '掄',
+ '' => '授',
+ '' => '掙',
+ '' => '採',
+ '' => '掬',
+ '' => '排',
+ '' => '掏',
+ '' => '掀',
+ '' => '捻',
+ '' => '捩',
+ '' => '捨',
+ '' => '捺',
+ '' => '敝',
+ '' => '敖',
+ '' => '救',
+ '' => '教',
+ '' => '敗',
+ '' => '啟',
+ '' => '敏',
+ '' => '敘',
+ '' => '敕',
+ '' => '敔',
+ '' => '斜',
+ '' => '斛',
+ '' => '斬',
+ '' => '族',
+ '' => '旋',
+ '' => '旌',
+ '' => '旎',
+ '' => '晝',
+ '' => '晚',
+ '' => '晤',
+ '' => '晨',
+ '' => '晦',
+ '' => '晞',
+ '' => '曹',
+ '' => '勗',
+ '' => '望',
+ '' => '梁',
+ '' => '梯',
+ '' => '梢',
+ '' => '梓',
+ '' => '梵',
+ '' => '桿',
+ '' => '桶',
+ '' => '梱',
+ '' => '梧',
+ '' => '梗',
+ '' => '械',
+ '' => '梃',
+ '' => '棄',
+ '' => '梭',
+ '' => '梆',
+ '' => '梅',
+ '' => '梔',
+ '' => '條',
+ '' => '梨',
+ '' => '梟',
+ '' => '梡',
+ '' => '梂',
+ '' => '欲',
+ '' => '殺',
+ '@' => '毫',
+ 'A' => '毬',
+ 'B' => '氫',
+ 'C' => '涎',
+ 'D' => '涼',
+ 'E' => '淳',
+ 'F' => '淙',
+ 'G' => '液',
+ 'H' => '淡',
+ 'I' => '淌',
+ 'J' => '淤',
+ 'K' => '添',
+ 'L' => '淺',
+ 'M' => '清',
+ 'N' => '淇',
+ 'O' => '淋',
+ 'P' => '涯',
+ 'Q' => '淑',
+ 'R' => '涮',
+ 'S' => '淞',
+ 'T' => '淹',
+ 'U' => '涸',
+ 'V' => '混',
+ 'W' => '淵',
+ 'X' => '淅',
+ 'Y' => '淒',
+ 'Z' => '渚',
+ '[' => '涵',
+ '\\' => '淚',
+ ']' => '淫',
+ '^' => '淘',
+ '_' => '淪',
+ '`' => '深',
+ 'a' => '淮',
+ 'b' => '淨',
+ 'c' => '淆',
+ 'd' => '淄',
+ 'e' => '涪',
+ 'f' => '淬',
+ 'g' => '涿',
+ 'h' => '淦',
+ 'i' => '烹',
+ 'j' => '焉',
+ 'k' => '焊',
+ 'l' => '烽',
+ 'm' => '烯',
+ 'n' => '爽',
+ 'o' => '牽',
+ 'p' => '犁',
+ 'q' => '猜',
+ 'r' => '猛',
+ 's' => '猖',
+ 't' => '猓',
+ 'u' => '猙',
+ 'v' => '率',
+ 'w' => '琅',
+ 'x' => '琊',
+ 'y' => '球',
+ 'z' => '理',
+ '{' => '現',
+ '|' => '琍',
+ '}' => '瓠',
+ '~' => '瓶',
+ '' => '瓷',
+ '' => '甜',
+ '' => '產',
+ '' => '略',
+ '' => '畦',
+ '' => '畢',
+ '' => '異',
+ '' => '疏',
+ '' => '痔',
+ '' => '痕',
+ '' => '疵',
+ '' => '痊',
+ '' => '痍',
+ '' => '皎',
+ '' => '盔',
+ '' => '盒',
+ '' => '盛',
+ '' => '眷',
+ '' => '眾',
+ '' => '眼',
+ '' => '眶',
+ '' => '眸',
+ '' => '眺',
+ '' => '硫',
+ '' => '硃',
+ '' => '硎',
+ '' => '祥',
+ '' => '票',
+ '' => '祭',
+ '' => '移',
+ '' => '窒',
+ '' => '窕',
+ '' => '笠',
+ '' => '笨',
+ '' => '笛',
+ '' => '第',
+ '' => '符',
+ '' => '笙',
+ '' => '笞',
+ '' => '笮',
+ '' => '粒',
+ '' => '粗',
+ '' => '粕',
+ '' => '絆',
+ '' => '絃',
+ '' => '統',
+ '' => '紮',
+ '' => '紹',
+ '' => '紼',
+ '' => '絀',
+ '' => '細',
+ '' => '紳',
+ '' => '組',
+ '' => '累',
+ '' => '終',
+ '' => '紲',
+ '' => '紱',
+ '' => '缽',
+ '' => '羞',
+ '' => '羚',
+ '' => '翌',
+ '' => '翎',
+ '' => '習',
+ '' => '耜',
+ '' => '聊',
+ '' => '聆',
+ '' => '脯',
+ '' => '脖',
+ '' => '脣',
+ '' => '脫',
+ '' => '脩',
+ '' => '脰',
+ '' => '脤',
+ '' => '舂',
+ '' => '舵',
+ '' => '舷',
+ '' => '舶',
+ '' => '船',
+ '' => '莎',
+ '' => '莞',
+ '' => '莘',
+ '' => '荸',
+ '' => '莢',
+ '' => '莖',
+ '' => '莽',
+ '' => '莫',
+ '' => '莒',
+ '' => '莊',
+ '' => '莓',
+ '' => '莉',
+ '' => '莠',
+ '' => '荷',
+ '' => '荻',
+ '' => '荼',
+ '@' => '莆',
+ 'A' => '莧',
+ 'B' => '處',
+ 'C' => '彪',
+ 'D' => '蛇',
+ 'E' => '蛀',
+ 'F' => '蚶',
+ 'G' => '蛄',
+ 'H' => '蚵',
+ 'I' => '蛆',
+ 'J' => '蛋',
+ 'K' => '蚱',
+ 'L' => '蚯',
+ 'M' => '蛉',
+ 'N' => '術',
+ 'O' => '袞',
+ 'P' => '袈',
+ 'Q' => '被',
+ 'R' => '袒',
+ 'S' => '袖',
+ 'T' => '袍',
+ 'U' => '袋',
+ 'V' => '覓',
+ 'W' => '規',
+ 'X' => '訪',
+ 'Y' => '訝',
+ 'Z' => '訣',
+ '[' => '訥',
+ '\\' => '許',
+ ']' => '設',
+ '^' => '訟',
+ '_' => '訛',
+ '`' => '訢',
+ 'a' => '豉',
+ 'b' => '豚',
+ 'c' => '販',
+ 'd' => '責',
+ 'e' => '貫',
+ 'f' => '貨',
+ 'g' => '貪',
+ 'h' => '貧',
+ 'i' => '赧',
+ 'j' => '赦',
+ 'k' => '趾',
+ 'l' => '趺',
+ 'm' => '軛',
+ 'n' => '軟',
+ 'o' => '這',
+ 'p' => '逍',
+ 'q' => '通',
+ 'r' => '逗',
+ 's' => '連',
+ 't' => '速',
+ 'u' => '逝',
+ 'v' => '逐',
+ 'w' => '逕',
+ 'x' => '逞',
+ 'y' => '造',
+ 'z' => '透',
+ '{' => '逢',
+ '|' => '逖',
+ '}' => '逛',
+ '~' => '途',
+ '' => '部',
+ '' => '郭',
+ '' => '都',
+ '' => '酗',
+ '' => '野',
+ '' => '釵',
+ '' => '釦',
+ '' => '釣',
+ '' => '釧',
+ '' => '釭',
+ '' => '釩',
+ '' => '閉',
+ '' => '陪',
+ '' => '陵',
+ '' => '陳',
+ '' => '陸',
+ '' => '陰',
+ '' => '陴',
+ '' => '陶',
+ '' => '陷',
+ '' => '陬',
+ '' => '雀',
+ '' => '雪',
+ '' => '雩',
+ '' => '章',
+ '' => '竟',
+ '' => '頂',
+ '' => '頃',
+ '' => '魚',
+ '' => '鳥',
+ '' => '鹵',
+ '' => '鹿',
+ '' => '麥',
+ '' => '麻',
+ '' => '傢',
+ '' => '傍',
+ '' => '傅',
+ '' => '備',
+ '' => '傑',
+ '' => '傀',
+ '' => '傖',
+ '' => '傘',
+ '' => '傚',
+ '' => '最',
+ '' => '凱',
+ '' => '割',
+ '' => '剴',
+ '' => '創',
+ '' => '剩',
+ '' => '勞',
+ '' => '勝',
+ '' => '勛',
+ '' => '博',
+ '' => '厥',
+ '' => '啻',
+ '' => '喀',
+ '' => '喧',
+ '' => '啼',
+ '' => '喊',
+ '' => '喝',
+ '' => '喘',
+ '' => '喂',
+ '' => '喜',
+ '' => '喪',
+ '' => '喔',
+ '' => '喇',
+ '' => '喋',
+ '' => '喃',
+ '' => '喳',
+ '' => '單',
+ '' => '喟',
+ '' => '唾',
+ '' => '喲',
+ '' => '喚',
+ '' => '喻',
+ '' => '喬',
+ '' => '喱',
+ '' => '啾',
+ '' => '喉',
+ '' => '喫',
+ '' => '喙',
+ '' => '圍',
+ '' => '堯',
+ '' => '堪',
+ '' => '場',
+ '' => '堤',
+ '' => '堰',
+ '' => '報',
+ '' => '堡',
+ '' => '堝',
+ '' => '堠',
+ '' => '壹',
+ '' => '壺',
+ '' => '奠',
+ '@' => '婷',
+ 'A' => '媚',
+ 'B' => '婿',
+ 'C' => '媒',
+ 'D' => '媛',
+ 'E' => '媧',
+ 'F' => '孳',
+ 'G' => '孱',
+ 'H' => '寒',
+ 'I' => '富',
+ 'J' => '寓',
+ 'K' => '寐',
+ 'L' => '尊',
+ 'M' => '尋',
+ 'N' => '就',
+ 'O' => '嵌',
+ 'P' => '嵐',
+ 'Q' => '崴',
+ 'R' => '嵇',
+ 'S' => '巽',
+ 'T' => '幅',
+ 'U' => '帽',
+ 'V' => '幀',
+ 'W' => '幃',
+ 'X' => '幾',
+ 'Y' => '廊',
+ 'Z' => '廁',
+ '[' => '廂',
+ '\\' => '廄',
+ ']' => '弼',
+ '^' => '彭',
+ '_' => '復',
+ '`' => '循',
+ 'a' => '徨',
+ 'b' => '惑',
+ 'c' => '惡',
+ 'd' => '悲',
+ 'e' => '悶',
+ 'f' => '惠',
+ 'g' => '愜',
+ 'h' => '愣',
+ 'i' => '惺',
+ 'j' => '愕',
+ 'k' => '惰',
+ 'l' => '惻',
+ 'm' => '惴',
+ 'n' => '慨',
+ 'o' => '惱',
+ 'p' => '愎',
+ 'q' => '惶',
+ 'r' => '愉',
+ 's' => '愀',
+ 't' => '愒',
+ 'u' => '戟',
+ 'v' => '扉',
+ 'w' => '掣',
+ 'x' => '掌',
+ 'y' => '描',
+ 'z' => '揀',
+ '{' => '揩',
+ '|' => '揉',
+ '}' => '揆',
+ '~' => '揍',
+ '' => '插',
+ '' => '揣',
+ '' => '提',
+ '' => '握',
+ '' => '揖',
+ '' => '揭',
+ '' => '揮',
+ '' => '捶',
+ '' => '援',
+ '' => '揪',
+ '' => '換',
+ '' => '摒',
+ '' => '揚',
+ '' => '揹',
+ '' => '敞',
+ '' => '敦',
+ '' => '敢',
+ '' => '散',
+ '' => '斑',
+ '' => '斐',
+ '' => '斯',
+ '' => '普',
+ '' => '晰',
+ '' => '晴',
+ '' => '晶',
+ '' => '景',
+ '' => '暑',
+ '' => '智',
+ '' => '晾',
+ '' => '晷',
+ '' => '曾',
+ '' => '替',
+ '' => '期',
+ '' => '朝',
+ '' => '棺',
+ '' => '棕',
+ '' => '棠',
+ '' => '棘',
+ '' => '棗',
+ '' => '椅',
+ '' => '棟',
+ '' => '棵',
+ '' => '森',
+ '' => '棧',
+ '' => '棹',
+ '' => '棒',
+ '' => '棲',
+ '' => '棣',
+ '' => '棋',
+ '' => '棍',
+ '' => '植',
+ '' => '椒',
+ '' => '椎',
+ '' => '棉',
+ '' => '棚',
+ '' => '楮',
+ '' => '棻',
+ '' => '款',
+ '' => '欺',
+ '' => '欽',
+ '' => '殘',
+ '' => '殖',
+ '' => '殼',
+ '' => '毯',
+ '' => '氮',
+ '' => '氯',
+ '' => '氬',
+ '' => '港',
+ '' => '游',
+ '' => '湔',
+ '' => '渡',
+ '' => '渲',
+ '' => '湧',
+ '' => '湊',
+ '' => '渠',
+ '' => '渥',
+ '' => '渣',
+ '' => '減',
+ '' => '湛',
+ '' => '湘',
+ '' => '渤',
+ '' => '湖',
+ '' => '湮',
+ '' => '渭',
+ '' => '渦',
+ '' => '湯',
+ '' => '渴',
+ '' => '湍',
+ '' => '渺',
+ '' => '測',
+ '' => '湃',
+ '' => '渝',
+ '' => '渾',
+ '' => '滋',
+ '@' => '溉',
+ 'A' => '渙',
+ 'B' => '湎',
+ 'C' => '湣',
+ 'D' => '湄',
+ 'E' => '湲',
+ 'F' => '湩',
+ 'G' => '湟',
+ 'H' => '焙',
+ 'I' => '焚',
+ 'J' => '焦',
+ 'K' => '焰',
+ 'L' => '無',
+ 'M' => '然',
+ 'N' => '煮',
+ 'O' => '焜',
+ 'P' => '牌',
+ 'Q' => '犄',
+ 'R' => '犀',
+ 'S' => '猶',
+ 'T' => '猥',
+ 'U' => '猴',
+ 'V' => '猩',
+ 'W' => '琺',
+ 'X' => '琪',
+ 'Y' => '琳',
+ 'Z' => '琢',
+ '[' => '琥',
+ '\\' => '琵',
+ ']' => '琶',
+ '^' => '琴',
+ '_' => '琯',
+ '`' => '琛',
+ 'a' => '琦',
+ 'b' => '琨',
+ 'c' => '甥',
+ 'd' => '甦',
+ 'e' => '畫',
+ 'f' => '番',
+ 'g' => '痢',
+ 'h' => '痛',
+ 'i' => '痣',
+ 'j' => '痙',
+ 'k' => '痘',
+ 'l' => '痞',
+ 'm' => '痠',
+ 'n' => '登',
+ 'o' => '發',
+ 'p' => '皖',
+ 'q' => '皓',
+ 'r' => '皴',
+ 's' => '盜',
+ 't' => '睏',
+ 'u' => '短',
+ 'v' => '硝',
+ 'w' => '硬',
+ 'x' => '硯',
+ 'y' => '稍',
+ 'z' => '稈',
+ '{' => '程',
+ '|' => '稅',
+ '}' => '稀',
+ '~' => '窘',
+ '' => '窗',
+ '' => '窖',
+ '' => '童',
+ '' => '竣',
+ '' => '等',
+ '' => '策',
+ '' => '筆',
+ '' => '筐',
+ '' => '筒',
+ '' => '答',
+ '' => '筍',
+ '' => '筋',
+ '' => '筏',
+ '' => '筑',
+ '' => '粟',
+ '' => '粥',
+ '' => '絞',
+ '' => '結',
+ '' => '絨',
+ '' => '絕',
+ '' => '紫',
+ '' => '絮',
+ '' => '絲',
+ '' => '絡',
+ '' => '給',
+ '' => '絢',
+ '' => '絰',
+ '' => '絳',
+ '' => '善',
+ '' => '翔',
+ '' => '翕',
+ '' => '耋',
+ '' => '聒',
+ '' => '肅',
+ '' => '腕',
+ '' => '腔',
+ '' => '腋',
+ '' => '腑',
+ '' => '腎',
+ '' => '脹',
+ '' => '腆',
+ '' => '脾',
+ '' => '腌',
+ '' => '腓',
+ '' => '腴',
+ '' => '舒',
+ '' => '舜',
+ '' => '菩',
+ '' => '萃',
+ '' => '菸',
+ '' => '萍',
+ '' => '菠',
+ '' => '菅',
+ '' => '萋',
+ '' => '菁',
+ '' => '華',
+ '' => '菱',
+ '' => '菴',
+ '' => '著',
+ '' => '萊',
+ '' => '菰',
+ '' => '萌',
+ '' => '菌',
+ '' => '菽',
+ '' => '菲',
+ '' => '菊',
+ '' => '萸',
+ '' => '萎',
+ '' => '萄',
+ '' => '菜',
+ '' => '萇',
+ '' => '菔',
+ '' => '菟',
+ '' => '虛',
+ '' => '蛟',
+ '' => '蛙',
+ '' => '蛭',
+ '' => '蛔',
+ '' => '蛛',
+ '' => '蛤',
+ '' => '蛐',
+ '' => '蛞',
+ '' => '街',
+ '' => '裁',
+ '' => '裂',
+ '' => '袱',
+ '' => '覃',
+ '' => '視',
+ '' => '註',
+ '' => '詠',
+ '' => '評',
+ '' => '詞',
+ '' => '証',
+ '' => '詁',
+ '@' => '詔',
+ 'A' => '詛',
+ 'B' => '詐',
+ 'C' => '詆',
+ 'D' => '訴',
+ 'E' => '診',
+ 'F' => '訶',
+ 'G' => '詖',
+ 'H' => '象',
+ 'I' => '貂',
+ 'J' => '貯',
+ 'K' => '貼',
+ 'L' => '貳',
+ 'M' => '貽',
+ 'N' => '賁',
+ 'O' => '費',
+ 'P' => '賀',
+ 'Q' => '貴',
+ 'R' => '買',
+ 'S' => '貶',
+ 'T' => '貿',
+ 'U' => '貸',
+ 'V' => '越',
+ 'W' => '超',
+ 'X' => '趁',
+ 'Y' => '跎',
+ 'Z' => '距',
+ '[' => '跋',
+ '\\' => '跚',
+ ']' => '跑',
+ '^' => '跌',
+ '_' => '跛',
+ '`' => '跆',
+ 'a' => '軻',
+ 'b' => '軸',
+ 'c' => '軼',
+ 'd' => '辜',
+ 'e' => '逮',
+ 'f' => '逵',
+ 'g' => '週',
+ 'h' => '逸',
+ 'i' => '進',
+ 'j' => '逶',
+ 'k' => '鄂',
+ 'l' => '郵',
+ 'm' => '鄉',
+ 'n' => '郾',
+ 'o' => '酣',
+ 'p' => '酥',
+ 'q' => '量',
+ 'r' => '鈔',
+ 's' => '鈕',
+ 't' => '鈣',
+ 'u' => '鈉',
+ 'v' => '鈞',
+ 'w' => '鈍',
+ 'x' => '鈐',
+ 'y' => '鈇',
+ 'z' => '鈑',
+ '{' => '閔',
+ '|' => '閏',
+ '}' => '開',
+ '~' => '閑',
+ '' => '間',
+ '' => '閒',
+ '' => '閎',
+ '' => '隊',
+ '' => '階',
+ '' => '隋',
+ '' => '陽',
+ '' => '隅',
+ '' => '隆',
+ '' => '隍',
+ '' => '陲',
+ '' => '隄',
+ '' => '雁',
+ '' => '雅',
+ '' => '雄',
+ '' => '集',
+ '' => '雇',
+ '' => '雯',
+ '' => '雲',
+ '' => '韌',
+ '' => '項',
+ '' => '順',
+ '' => '須',
+ '' => '飧',
+ '' => '飪',
+ '' => '飯',
+ '' => '飩',
+ '' => '飲',
+ '' => '飭',
+ '' => '馮',
+ '' => '馭',
+ '' => '黃',
+ '' => '黍',
+ '' => '黑',
+ '' => '亂',
+ '' => '傭',
+ '' => '債',
+ '' => '傲',
+ '' => '傳',
+ '' => '僅',
+ '' => '傾',
+ '' => '催',
+ '' => '傷',
+ '' => '傻',
+ '' => '傯',
+ '' => '僇',
+ '' => '剿',
+ '' => '剷',
+ '' => '剽',
+ '' => '募',
+ '' => '勦',
+ '' => '勤',
+ '' => '勢',
+ '' => '勣',
+ '' => '匯',
+ '' => '嗟',
+ '' => '嗨',
+ '' => '嗓',
+ '' => '嗦',
+ '' => '嗎',
+ '' => '嗜',
+ '' => '嗇',
+ '' => '嗑',
+ '' => '嗣',
+ '' => '嗤',
+ '' => '嗯',
+ '' => '嗚',
+ '' => '嗡',
+ '' => '嗅',
+ '' => '嗆',
+ '' => '嗥',
+ '' => '嗉',
+ '' => '園',
+ '' => '圓',
+ '' => '塞',
+ '' => '塑',
+ '' => '塘',
+ '' => '塗',
+ '' => '塚',
+ '' => '塔',
+ '' => '填',
+ '' => '塌',
+ '' => '塭',
+ '' => '塊',
+ '' => '塢',
+ '' => '塒',
+ '' => '塋',
+ '' => '奧',
+ '' => '嫁',
+ '' => '嫉',
+ '' => '嫌',
+ '' => '媾',
+ '' => '媽',
+ '' => '媼',
+ '@' => '媳',
+ 'A' => '嫂',
+ 'B' => '媲',
+ 'C' => '嵩',
+ 'D' => '嵯',
+ 'E' => '幌',
+ 'F' => '幹',
+ 'G' => '廉',
+ 'H' => '廈',
+ 'I' => '弒',
+ 'J' => '彙',
+ 'K' => '徬',
+ 'L' => '微',
+ 'M' => '愚',
+ 'N' => '意',
+ 'O' => '慈',
+ 'P' => '感',
+ 'Q' => '想',
+ 'R' => '愛',
+ 'S' => '惹',
+ 'T' => '愁',
+ 'U' => '愈',
+ 'V' => '慎',
+ 'W' => '慌',
+ 'X' => '慄',
+ 'Y' => '慍',
+ 'Z' => '愾',
+ '[' => '愴',
+ '\\' => '愧',
+ ']' => '愍',
+ '^' => '愆',
+ '_' => '愷',
+ '`' => '戡',
+ 'a' => '戢',
+ 'b' => '搓',
+ 'c' => '搾',
+ 'd' => '搞',
+ 'e' => '搪',
+ 'f' => '搭',
+ 'g' => '搽',
+ 'h' => '搬',
+ 'i' => '搏',
+ 'j' => '搜',
+ 'k' => '搔',
+ 'l' => '損',
+ 'm' => '搶',
+ 'n' => '搖',
+ 'o' => '搗',
+ 'p' => '搆',
+ 'q' => '敬',
+ 'r' => '斟',
+ 's' => '新',
+ 't' => '暗',
+ 'u' => '暉',
+ 'v' => '暇',
+ 'w' => '暈',
+ 'x' => '暖',
+ 'y' => '暄',
+ 'z' => '暘',
+ '{' => '暍',
+ '|' => '會',
+ '}' => '榔',
+ '~' => '業',
+ '' => '楚',
+ '' => '楷',
+ '' => '楠',
+ '' => '楔',
+ '' => '極',
+ '' => '椰',
+ '' => '概',
+ '' => '楊',
+ '' => '楨',
+ '' => '楫',
+ '' => '楞',
+ '' => '楓',
+ '' => '楹',
+ '' => '榆',
+ '' => '楝',
+ '' => '楣',
+ '' => '楛',
+ '' => '歇',
+ '' => '歲',
+ '' => '毀',
+ '' => '殿',
+ '' => '毓',
+ '' => '毽',
+ '' => '溢',
+ '' => '溯',
+ '' => '滓',
+ '' => '溶',
+ '' => '滂',
+ '' => '源',
+ '' => '溝',
+ '' => '滇',
+ '' => '滅',
+ '' => '溥',
+ '' => '溘',
+ '' => '溼',
+ '' => '溺',
+ '' => '溫',
+ '' => '滑',
+ '' => '準',
+ '' => '溜',
+ '' => '滄',
+ '' => '滔',
+ '' => '溪',
+ '' => '溧',
+ '' => '溴',
+ '' => '煎',
+ '' => '煙',
+ '' => '煩',
+ '' => '煤',
+ '' => '煉',
+ '' => '照',
+ '' => '煜',
+ '' => '煬',
+ '' => '煦',
+ '' => '煌',
+ '' => '煥',
+ '' => '煞',
+ '' => '煆',
+ '' => '煨',
+ '' => '煖',
+ '' => '爺',
+ '' => '牒',
+ '' => '猷',
+ '' => '獅',
+ '' => '猿',
+ '' => '猾',
+ '' => '瑯',
+ '' => '瑚',
+ '' => '瑕',
+ '' => '瑟',
+ '' => '瑞',
+ '' => '瑁',
+ '' => '琿',
+ '' => '瑙',
+ '' => '瑛',
+ '' => '瑜',
+ '' => '當',
+ '' => '畸',
+ '' => '瘀',
+ '' => '痰',
+ '' => '瘁',
+ '' => '痲',
+ '' => '痱',
+ '' => '痺',
+ '' => '痿',
+ '' => '痴',
+ '' => '痳',
+ '' => '盞',
+ '' => '盟',
+ '' => '睛',
+ '' => '睫',
+ '' => '睦',
+ '' => '睞',
+ '' => '督',
+ '@' => '睹',
+ 'A' => '睪',
+ 'B' => '睬',
+ 'C' => '睜',
+ 'D' => '睥',
+ 'E' => '睨',
+ 'F' => '睢',
+ 'G' => '矮',
+ 'H' => '碎',
+ 'I' => '碰',
+ 'J' => '碗',
+ 'K' => '碘',
+ 'L' => '碌',
+ 'M' => '碉',
+ 'N' => '硼',
+ 'O' => '碑',
+ 'P' => '碓',
+ 'Q' => '硿',
+ 'R' => '祺',
+ 'S' => '祿',
+ 'T' => '禁',
+ 'U' => '萬',
+ 'V' => '禽',
+ 'W' => '稜',
+ 'X' => '稚',
+ 'Y' => '稠',
+ 'Z' => '稔',
+ '[' => '稟',
+ '\\' => '稞',
+ ']' => '窟',
+ '^' => '窠',
+ '_' => '筷',
+ '`' => '節',
+ 'a' => '筠',
+ 'b' => '筮',
+ 'c' => '筧',
+ 'd' => '粱',
+ 'e' => '粳',
+ 'f' => '粵',
+ 'g' => '經',
+ 'h' => '絹',
+ 'i' => '綑',
+ 'j' => '綁',
+ 'k' => '綏',
+ 'l' => '絛',
+ 'm' => '置',
+ 'n' => '罩',
+ 'o' => '罪',
+ 'p' => '署',
+ 'q' => '義',
+ 'r' => '羨',
+ 's' => '群',
+ 't' => '聖',
+ 'u' => '聘',
+ 'v' => '肆',
+ 'w' => '肄',
+ 'x' => '腱',
+ 'y' => '腰',
+ 'z' => '腸',
+ '{' => '腥',
+ '|' => '腮',
+ '}' => '腳',
+ '~' => '腫',
+ '' => '腹',
+ '' => '腺',
+ '' => '腦',
+ '' => '舅',
+ '' => '艇',
+ '' => '蒂',
+ '' => '葷',
+ '' => '落',
+ '' => '萱',
+ '' => '葵',
+ '' => '葦',
+ '' => '葫',
+ '' => '葉',
+ '' => '葬',
+ '' => '葛',
+ '' => '萼',
+ '' => '萵',
+ '' => '葡',
+ '' => '董',
+ '' => '葩',
+ '' => '葭',
+ '' => '葆',
+ '' => '虞',
+ '' => '虜',
+ '' => '號',
+ '' => '蛹',
+ '' => '蜓',
+ '' => '蜈',
+ '' => '蜇',
+ '' => '蜀',
+ '' => '蛾',
+ '' => '蛻',
+ '' => '蜂',
+ '' => '蜃',
+ '' => '蜆',
+ '' => '蜊',
+ '' => '衙',
+ '' => '裟',
+ '' => '裔',
+ '' => '裙',
+ '' => '補',
+ '' => '裘',
+ '' => '裝',
+ '' => '裡',
+ '' => '裊',
+ '' => '裕',
+ '' => '裒',
+ '' => '覜',
+ '' => '解',
+ '' => '詫',
+ '' => '該',
+ '' => '詳',
+ '' => '試',
+ '' => '詩',
+ '' => '詰',
+ '' => '誇',
+ '' => '詼',
+ '' => '詣',
+ '' => '誠',
+ '' => '話',
+ '' => '誅',
+ '' => '詭',
+ '' => '詢',
+ '' => '詮',
+ '' => '詬',
+ '' => '詹',
+ '' => '詻',
+ '' => '訾',
+ '' => '詨',
+ '' => '豢',
+ '' => '貊',
+ '' => '貉',
+ '' => '賊',
+ '' => '資',
+ '' => '賈',
+ '' => '賄',
+ '' => '貲',
+ '' => '賃',
+ '' => '賂',
+ '' => '賅',
+ '' => '跡',
+ '' => '跟',
+ '' => '跨',
+ '' => '路',
+ '' => '跳',
+ '' => '跺',
+ '' => '跪',
+ '' => '跤',
+ '' => '跦',
+ '' => '躲',
+ '' => '較',
+ '' => '載',
+ '' => '軾',
+ '' => '輊',
+ '@' => '辟',
+ 'A' => '農',
+ 'B' => '運',
+ 'C' => '遊',
+ 'D' => '道',
+ 'E' => '遂',
+ 'F' => '達',
+ 'G' => '逼',
+ 'H' => '違',
+ 'I' => '遐',
+ 'J' => '遇',
+ 'K' => '遏',
+ 'L' => '過',
+ 'M' => '遍',
+ 'N' => '遑',
+ 'O' => '逾',
+ 'P' => '遁',
+ 'Q' => '鄒',
+ 'R' => '鄗',
+ 'S' => '酬',
+ 'T' => '酪',
+ 'U' => '酩',
+ 'V' => '釉',
+ 'W' => '鈷',
+ 'X' => '鉗',
+ 'Y' => '鈸',
+ 'Z' => '鈽',
+ '[' => '鉀',
+ '\\' => '鈾',
+ ']' => '鉛',
+ '^' => '鉋',
+ '_' => '鉤',
+ '`' => '鉑',
+ 'a' => '鈴',
+ 'b' => '鉉',
+ 'c' => '鉍',
+ 'd' => '鉅',
+ 'e' => '鈹',
+ 'f' => '鈿',
+ 'g' => '鉚',
+ 'h' => '閘',
+ 'i' => '隘',
+ 'j' => '隔',
+ 'k' => '隕',
+ 'l' => '雍',
+ 'm' => '雋',
+ 'n' => '雉',
+ 'o' => '雊',
+ 'p' => '雷',
+ 'q' => '電',
+ 'r' => '雹',
+ 's' => '零',
+ 't' => '靖',
+ 'u' => '靴',
+ 'v' => '靶',
+ 'w' => '預',
+ 'x' => '頑',
+ 'y' => '頓',
+ 'z' => '頊',
+ '{' => '頒',
+ '|' => '頌',
+ '}' => '飼',
+ '~' => '飴',
+ '' => '飽',
+ '' => '飾',
+ '' => '馳',
+ '' => '馱',
+ '' => '馴',
+ '' => '髡',
+ '' => '鳩',
+ '' => '麂',
+ '' => '鼎',
+ '' => '鼓',
+ '' => '鼠',
+ '' => '僧',
+ '' => '僮',
+ '' => '僥',
+ '' => '僖',
+ '' => '僭',
+ '' => '僚',
+ '' => '僕',
+ '' => '像',
+ '' => '僑',
+ '' => '僱',
+ '' => '僎',
+ '' => '僩',
+ '' => '兢',
+ '' => '凳',
+ '' => '劃',
+ '' => '劂',
+ '' => '匱',
+ '' => '厭',
+ '' => '嗾',
+ '' => '嘀',
+ '' => '嘛',
+ '' => '嘗',
+ '' => '嗽',
+ '' => '嘔',
+ '' => '嘆',
+ '' => '嘉',
+ '' => '嘍',
+ '' => '嘎',
+ '' => '嗷',
+ '' => '嘖',
+ '' => '嘟',
+ '' => '嘈',
+ '' => '嘐',
+ '' => '嗶',
+ '' => '團',
+ '' => '圖',
+ '' => '塵',
+ '' => '塾',
+ '' => '境',
+ '' => '墓',
+ '' => '墊',
+ '' => '塹',
+ '' => '墅',
+ '' => '塽',
+ '' => '壽',
+ '' => '夥',
+ '' => '夢',
+ '' => '夤',
+ '' => '奪',
+ '' => '奩',
+ '' => '嫡',
+ '' => '嫦',
+ '' => '嫩',
+ '' => '嫗',
+ '' => '嫖',
+ '' => '嫘',
+ '' => '嫣',
+ '' => '孵',
+ '' => '寞',
+ '' => '寧',
+ '' => '寡',
+ '' => '寥',
+ '' => '實',
+ '' => '寨',
+ '' => '寢',
+ '' => '寤',
+ '' => '察',
+ '' => '對',
+ '' => '屢',
+ '' => '嶄',
+ '' => '嶇',
+ '' => '幛',
+ '' => '幣',
+ '' => '幕',
+ '' => '幗',
+ '' => '幔',
+ '' => '廓',
+ '' => '廖',
+ '' => '弊',
+ '' => '彆',
+ '' => '彰',
+ '' => '徹',
+ '' => '慇',
+ '@' => '愿',
+ 'A' => '態',
+ 'B' => '慷',
+ 'C' => '慢',
+ 'D' => '慣',
+ 'E' => '慟',
+ 'F' => '慚',
+ 'G' => '慘',
+ 'H' => '慵',
+ 'I' => '截',
+ 'J' => '撇',
+ 'K' => '摘',
+ 'L' => '摔',
+ 'M' => '撤',
+ 'N' => '摸',
+ 'O' => '摟',
+ 'P' => '摺',
+ 'Q' => '摑',
+ 'R' => '摧',
+ 'S' => '搴',
+ 'T' => '摭',
+ 'U' => '摻',
+ 'V' => '敲',
+ 'W' => '斡',
+ 'X' => '旗',
+ 'Y' => '旖',
+ 'Z' => '暢',
+ '[' => '暨',
+ '\\' => '暝',
+ ']' => '榜',
+ '^' => '榨',
+ '_' => '榕',
+ '`' => '槁',
+ 'a' => '榮',
+ 'b' => '槓',
+ 'c' => '構',
+ 'd' => '榛',
+ 'e' => '榷',
+ 'f' => '榻',
+ 'g' => '榫',
+ 'h' => '榴',
+ 'i' => '槐',
+ 'j' => '槍',
+ 'k' => '榭',
+ 'l' => '槌',
+ 'm' => '榦',
+ 'n' => '槃',
+ 'o' => '榣',
+ 'p' => '歉',
+ 'q' => '歌',
+ 'r' => '氳',
+ 's' => '漳',
+ 't' => '演',
+ 'u' => '滾',
+ 'v' => '漓',
+ 'w' => '滴',
+ 'x' => '漩',
+ 'y' => '漾',
+ 'z' => '漠',
+ '{' => '漬',
+ '|' => '漏',
+ '}' => '漂',
+ '~' => '漢',
+ '' => '滿',
+ '' => '滯',
+ '' => '漆',
+ '' => '漱',
+ '' => '漸',
+ '' => '漲',
+ '' => '漣',
+ '' => '漕',
+ '' => '漫',
+ '' => '漯',
+ '' => '澈',
+ '' => '漪',
+ '' => '滬',
+ '' => '漁',
+ '' => '滲',
+ '' => '滌',
+ '' => '滷',
+ '' => '熔',
+ '' => '熙',
+ '' => '煽',
+ '' => '熊',
+ '' => '熄',
+ '' => '熒',
+ '' => '爾',
+ '' => '犒',
+ '' => '犖',
+ '' => '獄',
+ '' => '獐',
+ '' => '瑤',
+ '' => '瑣',
+ '' => '瑪',
+ '' => '瑰',
+ '' => '瑭',
+ '' => '甄',
+ '' => '疑',
+ '' => '瘧',
+ '' => '瘍',
+ '' => '瘋',
+ '' => '瘉',
+ '' => '瘓',
+ '' => '盡',
+ '' => '監',
+ '' => '瞄',
+ '' => '睽',
+ '' => '睿',
+ '' => '睡',
+ '' => '磁',
+ '' => '碟',
+ '' => '碧',
+ '' => '碳',
+ '' => '碩',
+ '' => '碣',
+ '' => '禎',
+ '' => '福',
+ '' => '禍',
+ '' => '種',
+ '' => '稱',
+ '' => '窪',
+ '' => '窩',
+ '' => '竭',
+ '' => '端',
+ '' => '管',
+ '' => '箕',
+ '' => '箋',
+ '' => '筵',
+ '' => '算',
+ '' => '箝',
+ '' => '箔',
+ '' => '箏',
+ '' => '箸',
+ '' => '箇',
+ '' => '箄',
+ '' => '粹',
+ '' => '粽',
+ '' => '精',
+ '' => '綻',
+ '' => '綰',
+ '' => '綜',
+ '' => '綽',
+ '' => '綾',
+ '' => '綠',
+ '' => '緊',
+ '' => '綴',
+ '' => '網',
+ '' => '綱',
+ '' => '綺',
+ '' => '綢',
+ '' => '綿',
+ '' => '綵',
+ '' => '綸',
+ '' => '維',
+ '' => '緒',
+ '' => '緇',
+ '' => '綬',
+ '@' => '罰',
+ 'A' => '翠',
+ 'B' => '翡',
+ 'C' => '翟',
+ 'D' => '聞',
+ 'E' => '聚',
+ 'F' => '肇',
+ 'G' => '腐',
+ 'H' => '膀',
+ 'I' => '膏',
+ 'J' => '膈',
+ 'K' => '膊',
+ 'L' => '腿',
+ 'M' => '膂',
+ 'N' => '臧',
+ 'O' => '臺',
+ 'P' => '與',
+ 'Q' => '舔',
+ 'R' => '舞',
+ 'S' => '艋',
+ 'T' => '蓉',
+ 'U' => '蒿',
+ 'V' => '蓆',
+ 'W' => '蓄',
+ 'X' => '蒙',
+ 'Y' => '蒞',
+ 'Z' => '蒲',
+ '[' => '蒜',
+ '\\' => '蓋',
+ ']' => '蒸',
+ '^' => '蓀',
+ '_' => '蓓',
+ '`' => '蒐',
+ 'a' => '蒼',
+ 'b' => '蓑',
+ 'c' => '蓊',
+ 'd' => '蜿',
+ 'e' => '蜜',
+ 'f' => '蜻',
+ 'g' => '蜢',
+ 'h' => '蜥',
+ 'i' => '蜴',
+ 'j' => '蜘',
+ 'k' => '蝕',
+ 'l' => '蜷',
+ 'm' => '蜩',
+ 'n' => '裳',
+ 'o' => '褂',
+ 'p' => '裴',
+ 'q' => '裹',
+ 'r' => '裸',
+ 's' => '製',
+ 't' => '裨',
+ 'u' => '褚',
+ 'v' => '裯',
+ 'w' => '誦',
+ 'x' => '誌',
+ 'y' => '語',
+ 'z' => '誣',
+ '{' => '認',
+ '|' => '誡',
+ '}' => '誓',
+ '~' => '誤',
+ '' => '說',
+ '' => '誥',
+ '' => '誨',
+ '' => '誘',
+ '' => '誑',
+ '' => '誚',
+ '' => '誧',
+ '' => '豪',
+ '' => '貍',
+ '' => '貌',
+ '' => '賓',
+ '' => '賑',
+ '' => '賒',
+ '' => '赫',
+ '' => '趙',
+ '' => '趕',
+ '' => '跼',
+ '' => '輔',
+ '' => '輒',
+ '' => '輕',
+ '' => '輓',
+ '' => '辣',
+ '' => '遠',
+ '' => '遘',
+ '' => '遜',
+ '' => '遣',
+ '' => '遙',
+ '' => '遞',
+ '' => '遢',
+ '' => '遝',
+ '' => '遛',
+ '' => '鄙',
+ '' => '鄘',
+ '' => '鄞',
+ '' => '酵',
+ '' => '酸',
+ '' => '酷',
+ '' => '酴',
+ '' => '鉸',
+ '' => '銀',
+ '' => '銅',
+ '' => '銘',
+ '' => '銖',
+ '' => '鉻',
+ '' => '銓',
+ '' => '銜',
+ '' => '銨',
+ '' => '鉼',
+ '' => '銑',
+ '' => '閡',
+ '' => '閨',
+ '' => '閩',
+ '' => '閣',
+ '' => '閥',
+ '' => '閤',
+ '' => '隙',
+ '' => '障',
+ '' => '際',
+ '' => '雌',
+ '' => '雒',
+ '' => '需',
+ '' => '靼',
+ '' => '鞅',
+ '' => '韶',
+ '' => '頗',
+ '' => '領',
+ '' => '颯',
+ '' => '颱',
+ '' => '餃',
+ '' => '餅',
+ '' => '餌',
+ '' => '餉',
+ '' => '駁',
+ '' => '骯',
+ '' => '骰',
+ '' => '髦',
+ '' => '魁',
+ '' => '魂',
+ '' => '鳴',
+ '' => '鳶',
+ '' => '鳳',
+ '' => '麼',
+ '' => '鼻',
+ '' => '齊',
+ '' => '億',
+ '' => '儀',
+ '' => '僻',
+ '' => '僵',
+ '' => '價',
+ '' => '儂',
+ '' => '儈',
+ '' => '儉',
+ '' => '儅',
+ '' => '凜',
+ '@' => '劇',
+ 'A' => '劈',
+ 'B' => '劉',
+ 'C' => '劍',
+ 'D' => '劊',
+ 'E' => '勰',
+ 'F' => '厲',
+ 'G' => '嘮',
+ 'H' => '嘻',
+ 'I' => '嘹',
+ 'J' => '嘲',
+ 'K' => '嘿',
+ 'L' => '嘴',
+ 'M' => '嘩',
+ 'N' => '噓',
+ 'O' => '噎',
+ 'P' => '噗',
+ 'Q' => '噴',
+ 'R' => '嘶',
+ 'S' => '嘯',
+ 'T' => '嘰',
+ 'U' => '墀',
+ 'V' => '墟',
+ 'W' => '增',
+ 'X' => '墳',
+ 'Y' => '墜',
+ 'Z' => '墮',
+ '[' => '墩',
+ '\\' => '墦',
+ ']' => '奭',
+ '^' => '嬉',
+ '_' => '嫻',
+ '`' => '嬋',
+ 'a' => '嫵',
+ 'b' => '嬌',
+ 'c' => '嬈',
+ 'd' => '寮',
+ 'e' => '寬',
+ 'f' => '審',
+ 'g' => '寫',
+ 'h' => '層',
+ 'i' => '履',
+ 'j' => '嶝',
+ 'k' => '嶔',
+ 'l' => '幢',
+ 'm' => '幟',
+ 'n' => '幡',
+ 'o' => '廢',
+ 'p' => '廚',
+ 'q' => '廟',
+ 'r' => '廝',
+ 's' => '廣',
+ 't' => '廠',
+ 'u' => '彈',
+ 'v' => '影',
+ 'w' => '德',
+ 'x' => '徵',
+ 'y' => '慶',
+ 'z' => '慧',
+ '{' => '慮',
+ '|' => '慝',
+ '}' => '慕',
+ '~' => '憂',
+ '' => '慼',
+ '' => '慰',
+ '' => '慫',
+ '' => '慾',
+ '' => '憧',
+ '' => '憐',
+ '' => '憫',
+ '' => '憎',
+ '' => '憬',
+ '' => '憚',
+ '' => '憤',
+ '' => '憔',
+ '' => '憮',
+ '' => '戮',
+ '' => '摩',
+ '' => '摯',
+ '' => '摹',
+ '' => '撞',
+ '' => '撲',
+ '' => '撈',
+ '' => '撐',
+ '' => '撰',
+ '' => '撥',
+ '' => '撓',
+ '' => '撕',
+ '' => '撩',
+ '' => '撒',
+ '' => '撮',
+ '' => '播',
+ '' => '撫',
+ '' => '撚',
+ '' => '撬',
+ '' => '撙',
+ '' => '撢',
+ '' => '撳',
+ '' => '敵',
+ '' => '敷',
+ '' => '數',
+ '' => '暮',
+ '' => '暫',
+ '' => '暴',
+ '' => '暱',
+ '' => '樣',
+ '' => '樟',
+ '' => '槨',
+ '' => '樁',
+ '' => '樞',
+ '' => '標',
+ '' => '槽',
+ '' => '模',
+ '' => '樓',
+ '' => '樊',
+ '' => '槳',
+ '' => '樂',
+ '' => '樅',
+ '' => '槭',
+ '' => '樑',
+ '' => '歐',
+ '' => '歎',
+ '' => '殤',
+ '' => '毅',
+ '' => '毆',
+ '' => '漿',
+ '' => '潼',
+ '' => '澄',
+ '' => '潑',
+ '' => '潦',
+ '' => '潔',
+ '' => '澆',
+ '' => '潭',
+ '' => '潛',
+ '' => '潸',
+ '' => '潮',
+ '' => '澎',
+ '' => '潺',
+ '' => '潰',
+ '' => '潤',
+ '' => '澗',
+ '' => '潘',
+ '' => '滕',
+ '' => '潯',
+ '' => '潠',
+ '' => '潟',
+ '' => '熟',
+ '' => '熬',
+ '' => '熱',
+ '' => '熨',
+ '' => '牖',
+ '' => '犛',
+ '' => '獎',
+ '' => '獗',
+ '' => '瑩',
+ '' => '璋',
+ '' => '璃',
+ '@' => '瑾',
+ 'A' => '璀',
+ 'B' => '畿',
+ 'C' => '瘠',
+ 'D' => '瘩',
+ 'E' => '瘟',
+ 'F' => '瘤',
+ 'G' => '瘦',
+ 'H' => '瘡',
+ 'I' => '瘢',
+ 'J' => '皚',
+ 'K' => '皺',
+ 'L' => '盤',
+ 'M' => '瞎',
+ 'N' => '瞇',
+ 'O' => '瞌',
+ 'P' => '瞑',
+ 'Q' => '瞋',
+ 'R' => '磋',
+ 'S' => '磅',
+ 'T' => '確',
+ 'U' => '磊',
+ 'V' => '碾',
+ 'W' => '磕',
+ 'X' => '碼',
+ 'Y' => '磐',
+ 'Z' => '稿',
+ '[' => '稼',
+ '\\' => '穀',
+ ']' => '稽',
+ '^' => '稷',
+ '_' => '稻',
+ '`' => '窯',
+ 'a' => '窮',
+ 'b' => '箭',
+ 'c' => '箱',
+ 'd' => '範',
+ 'e' => '箴',
+ 'f' => '篆',
+ 'g' => '篇',
+ 'h' => '篁',
+ 'i' => '箠',
+ 'j' => '篌',
+ 'k' => '糊',
+ 'l' => '締',
+ 'm' => '練',
+ 'n' => '緯',
+ 'o' => '緻',
+ 'p' => '緘',
+ 'q' => '緬',
+ 'r' => '緝',
+ 's' => '編',
+ 't' => '緣',
+ 'u' => '線',
+ 'v' => '緞',
+ 'w' => '緩',
+ 'x' => '綞',
+ 'y' => '緙',
+ 'z' => '緲',
+ '{' => '緹',
+ '|' => '罵',
+ '}' => '罷',
+ '~' => '羯',
+ '' => '翩',
+ '' => '耦',
+ '' => '膛',
+ '' => '膜',
+ '' => '膝',
+ '' => '膠',
+ '' => '膚',
+ '' => '膘',
+ '' => '蔗',
+ '' => '蔽',
+ '' => '蔚',
+ '' => '蓮',
+ '' => '蔬',
+ '' => '蔭',
+ '' => '蔓',
+ '' => '蔑',
+ '' => '蔣',
+ '' => '蔡',
+ '' => '蔔',
+ '' => '蓬',
+ '' => '蔥',
+ '' => '蓿',
+ '' => '蔆',
+ '' => '螂',
+ '' => '蝴',
+ '' => '蝶',
+ '' => '蝠',
+ '' => '蝦',
+ '' => '蝸',
+ '' => '蝨',
+ '' => '蝙',
+ '' => '蝗',
+ '' => '蝌',
+ '' => '蝓',
+ '' => '衛',
+ '' => '衝',
+ '' => '褐',
+ '' => '複',
+ '' => '褒',
+ '' => '褓',
+ '' => '褕',
+ '' => '褊',
+ '' => '誼',
+ '' => '諒',
+ '' => '談',
+ '' => '諄',
+ '' => '誕',
+ '' => '請',
+ '' => '諸',
+ '' => '課',
+ '' => '諉',
+ '' => '諂',
+ '' => '調',
+ '' => '誰',
+ '' => '論',
+ '' => '諍',
+ '' => '誶',
+ '' => '誹',
+ '' => '諛',
+ '' => '豌',
+ '' => '豎',
+ '' => '豬',
+ '' => '賠',
+ '' => '賞',
+ '' => '賦',
+ '' => '賤',
+ '' => '賬',
+ '' => '賭',
+ '' => '賢',
+ '' => '賣',
+ '' => '賜',
+ '' => '質',
+ '' => '賡',
+ '' => '赭',
+ '' => '趟',
+ '' => '趣',
+ '' => '踫',
+ '' => '踐',
+ '' => '踝',
+ '' => '踢',
+ '' => '踏',
+ '' => '踩',
+ '' => '踟',
+ '' => '踡',
+ '' => '踞',
+ '' => '躺',
+ '' => '輝',
+ '' => '輛',
+ '' => '輟',
+ '' => '輩',
+ '' => '輦',
+ '' => '輪',
+ '' => '輜',
+ '' => '輞',
+ '@' => '輥',
+ 'A' => '適',
+ 'B' => '遮',
+ 'C' => '遨',
+ 'D' => '遭',
+ 'E' => '遷',
+ 'F' => '鄰',
+ 'G' => '鄭',
+ 'H' => '鄧',
+ 'I' => '鄱',
+ 'J' => '醇',
+ 'K' => '醉',
+ 'L' => '醋',
+ 'M' => '醃',
+ 'N' => '鋅',
+ 'O' => '銻',
+ 'P' => '銷',
+ 'Q' => '鋪',
+ 'R' => '銬',
+ 'S' => '鋤',
+ 'T' => '鋁',
+ 'U' => '銳',
+ 'V' => '銼',
+ 'W' => '鋒',
+ 'X' => '鋇',
+ 'Y' => '鋰',
+ 'Z' => '銲',
+ '[' => '閭',
+ '\\' => '閱',
+ ']' => '霄',
+ '^' => '霆',
+ '_' => '震',
+ '`' => '霉',
+ 'a' => '靠',
+ 'b' => '鞍',
+ 'c' => '鞋',
+ 'd' => '鞏',
+ 'e' => '頡',
+ 'f' => '頫',
+ 'g' => '頜',
+ 'h' => '颳',
+ 'i' => '養',
+ 'j' => '餓',
+ 'k' => '餒',
+ 'l' => '餘',
+ 'm' => '駝',
+ 'n' => '駐',
+ 'o' => '駟',
+ 'p' => '駛',
+ 'q' => '駑',
+ 'r' => '駕',
+ 's' => '駒',
+ 't' => '駙',
+ 'u' => '骷',
+ 'v' => '髮',
+ 'w' => '髯',
+ 'x' => '鬧',
+ 'y' => '魅',
+ 'z' => '魄',
+ '{' => '魷',
+ '|' => '魯',
+ '}' => '鴆',
+ '~' => '鴉',
+ '' => '鴃',
+ '' => '麩',
+ '' => '麾',
+ '' => '黎',
+ '' => '墨',
+ '' => '齒',
+ '' => '儒',
+ '' => '儘',
+ '' => '儔',
+ '' => '儐',
+ '' => '儕',
+ '' => '冀',
+ '' => '冪',
+ '' => '凝',
+ '' => '劑',
+ '' => '劓',
+ '' => '勳',
+ '' => '噙',
+ '' => '噫',
+ '' => '噹',
+ '' => '噩',
+ '' => '噤',
+ '' => '噸',
+ '' => '噪',
+ '' => '器',
+ '' => '噥',
+ '' => '噱',
+ '' => '噯',
+ '' => '噬',
+ '' => '噢',
+ '' => '噶',
+ '' => '壁',
+ '' => '墾',
+ '' => '壇',
+ '' => '壅',
+ '' => '奮',
+ '' => '嬝',
+ '' => '嬴',
+ '' => '學',
+ '' => '寰',
+ '' => '導',
+ '' => '彊',
+ '' => '憲',
+ '' => '憑',
+ '' => '憩',
+ '' => '憊',
+ '' => '懍',
+ '' => '憶',
+ '' => '憾',
+ '' => '懊',
+ '' => '懈',
+ '' => '戰',
+ '' => '擅',
+ '' => '擁',
+ '' => '擋',
+ '' => '撻',
+ '' => '撼',
+ '' => '據',
+ '' => '擄',
+ '' => '擇',
+ '' => '擂',
+ '' => '操',
+ '' => '撿',
+ '' => '擒',
+ '' => '擔',
+ '' => '撾',
+ '' => '整',
+ '' => '曆',
+ '' => '曉',
+ '' => '暹',
+ '' => '曄',
+ '' => '曇',
+ '' => '暸',
+ '' => '樽',
+ '' => '樸',
+ '' => '樺',
+ '' => '橙',
+ '' => '橫',
+ '' => '橘',
+ '' => '樹',
+ '' => '橄',
+ '' => '橢',
+ '' => '橡',
+ '' => '橋',
+ '' => '橇',
+ '' => '樵',
+ '' => '機',
+ '' => '橈',
+ '' => '歙',
+ '' => '歷',
+ '' => '氅',
+ '' => '濂',
+ '' => '澱',
+ '' => '澡',
+ '@' => '濃',
+ 'A' => '澤',
+ 'B' => '濁',
+ 'C' => '澧',
+ 'D' => '澳',
+ 'E' => '激',
+ 'F' => '澹',
+ 'G' => '澶',
+ 'H' => '澦',
+ 'I' => '澠',
+ 'J' => '澴',
+ 'K' => '熾',
+ 'L' => '燉',
+ 'M' => '燐',
+ 'N' => '燒',
+ 'O' => '燈',
+ 'P' => '燕',
+ 'Q' => '熹',
+ 'R' => '燎',
+ 'S' => '燙',
+ 'T' => '燜',
+ 'U' => '燃',
+ 'V' => '燄',
+ 'W' => '獨',
+ 'X' => '璜',
+ 'Y' => '璣',
+ 'Z' => '璘',
+ '[' => '璟',
+ '\\' => '璞',
+ ']' => '瓢',
+ '^' => '甌',
+ '_' => '甍',
+ '`' => '瘴',
+ 'a' => '瘸',
+ 'b' => '瘺',
+ 'c' => '盧',
+ 'd' => '盥',
+ 'e' => '瞠',
+ 'f' => '瞞',
+ 'g' => '瞟',
+ 'h' => '瞥',
+ 'i' => '磨',
+ 'j' => '磚',
+ 'k' => '磬',
+ 'l' => '磧',
+ 'm' => '禦',
+ 'n' => '積',
+ 'o' => '穎',
+ 'p' => '穆',
+ 'q' => '穌',
+ 'r' => '穋',
+ 's' => '窺',
+ 't' => '篙',
+ 'u' => '簑',
+ 'v' => '築',
+ 'w' => '篤',
+ 'x' => '篛',
+ 'y' => '篡',
+ 'z' => '篩',
+ '{' => '篦',
+ '|' => '糕',
+ '}' => '糖',
+ '~' => '縊',
+ '' => '縑',
+ '' => '縈',
+ '' => '縛',
+ '' => '縣',
+ '' => '縞',
+ '' => '縝',
+ '' => '縉',
+ '' => '縐',
+ '' => '罹',
+ '' => '羲',
+ '' => '翰',
+ '' => '翱',
+ '' => '翮',
+ '' => '耨',
+ '' => '膳',
+ '' => '膩',
+ '' => '膨',
+ '' => '臻',
+ '' => '興',
+ '' => '艘',
+ '' => '艙',
+ '' => '蕊',
+ '' => '蕙',
+ '' => '蕈',
+ '' => '蕨',
+ '' => '蕩',
+ '' => '蕃',
+ '' => '蕉',
+ '' => '蕭',
+ '' => '蕪',
+ '' => '蕞',
+ '' => '螃',
+ '' => '螟',
+ '' => '螞',
+ '' => '螢',
+ '' => '融',
+ '' => '衡',
+ '' => '褪',
+ '' => '褲',
+ '' => '褥',
+ '' => '褫',
+ '' => '褡',
+ '' => '親',
+ '' => '覦',
+ '' => '諦',
+ '' => '諺',
+ '' => '諫',
+ '' => '諱',
+ '' => '謀',
+ '' => '諜',
+ '' => '諧',
+ '' => '諮',
+ '' => '諾',
+ '' => '謁',
+ '' => '謂',
+ '' => '諷',
+ '' => '諭',
+ '' => '諳',
+ '' => '諶',
+ '' => '諼',
+ '' => '豫',
+ '' => '豭',
+ '' => '貓',
+ '' => '賴',
+ '' => '蹄',
+ '' => '踱',
+ '' => '踴',
+ '' => '蹂',
+ '' => '踹',
+ '' => '踵',
+ '' => '輻',
+ '' => '輯',
+ '' => '輸',
+ '' => '輳',
+ '' => '辨',
+ '' => '辦',
+ '' => '遵',
+ '' => '遴',
+ '' => '選',
+ '' => '遲',
+ '' => '遼',
+ '' => '遺',
+ '' => '鄴',
+ '' => '醒',
+ '' => '錠',
+ '' => '錶',
+ '' => '鋸',
+ '' => '錳',
+ '' => '錯',
+ '' => '錢',
+ '' => '鋼',
+ '' => '錫',
+ '' => '錄',
+ '' => '錚',
+ '@' => '錐',
+ 'A' => '錦',
+ 'B' => '錡',
+ 'C' => '錕',
+ 'D' => '錮',
+ 'E' => '錙',
+ 'F' => '閻',
+ 'G' => '隧',
+ 'H' => '隨',
+ 'I' => '險',
+ 'J' => '雕',
+ 'K' => '霎',
+ 'L' => '霑',
+ 'M' => '霖',
+ 'N' => '霍',
+ 'O' => '霓',
+ 'P' => '霏',
+ 'Q' => '靛',
+ 'R' => '靜',
+ 'S' => '靦',
+ 'T' => '鞘',
+ 'U' => '頰',
+ 'V' => '頸',
+ 'W' => '頻',
+ 'X' => '頷',
+ 'Y' => '頭',
+ 'Z' => '頹',
+ '[' => '頤',
+ '\\' => '餐',
+ ']' => '館',
+ '^' => '餞',
+ '_' => '餛',
+ '`' => '餡',
+ 'a' => '餚',
+ 'b' => '駭',
+ 'c' => '駢',
+ 'd' => '駱',
+ 'e' => '骸',
+ 'f' => '骼',
+ 'g' => '髻',
+ 'h' => '髭',
+ 'i' => '鬨',
+ 'j' => '鮑',
+ 'k' => '鴕',
+ 'l' => '鴣',
+ 'm' => '鴦',
+ 'n' => '鴨',
+ 'o' => '鴒',
+ 'p' => '鴛',
+ 'q' => '默',
+ 'r' => '黔',
+ 's' => '龍',
+ 't' => '龜',
+ 'u' => '優',
+ 'v' => '償',
+ 'w' => '儡',
+ 'x' => '儲',
+ 'y' => '勵',
+ 'z' => '嚎',
+ '{' => '嚀',
+ '|' => '嚐',
+ '}' => '嚅',
+ '~' => '嚇',
+ '' => '嚏',
+ '' => '壕',
+ '' => '壓',
+ '' => '壑',
+ '' => '壎',
+ '' => '嬰',
+ '' => '嬪',
+ '' => '嬤',
+ '' => '孺',
+ '' => '尷',
+ '' => '屨',
+ '' => '嶼',
+ '' => '嶺',
+ '' => '嶽',
+ '' => '嶸',
+ '' => '幫',
+ '' => '彌',
+ '' => '徽',
+ '' => '應',
+ '' => '懂',
+ '' => '懇',
+ '' => '懦',
+ '' => '懋',
+ '' => '戲',
+ '' => '戴',
+ '' => '擎',
+ '' => '擊',
+ '' => '擘',
+ '' => '擠',
+ '' => '擰',
+ '' => '擦',
+ '' => '擬',
+ '' => '擱',
+ '' => '擢',
+ '' => '擭',
+ '' => '斂',
+ '' => '斃',
+ '' => '曙',
+ '' => '曖',
+ '' => '檀',
+ '' => '檔',
+ '' => '檄',
+ '' => '檢',
+ '' => '檜',
+ '' => '櫛',
+ '' => '檣',
+ '' => '橾',
+ '' => '檗',
+ '' => '檐',
+ '' => '檠',
+ '' => '歜',
+ '' => '殮',
+ '' => '毚',
+ '' => '氈',
+ '' => '濘',
+ '' => '濱',
+ '' => '濟',
+ '' => '濠',
+ '' => '濛',
+ '' => '濤',
+ '' => '濫',
+ '' => '濯',
+ '' => '澀',
+ '' => '濬',
+ '' => '濡',
+ '' => '濩',
+ '' => '濕',
+ '' => '濮',
+ '' => '濰',
+ '' => '燧',
+ '' => '營',
+ '' => '燮',
+ '' => '燦',
+ '' => '燥',
+ '' => '燭',
+ '' => '燬',
+ '' => '燴',
+ '' => '燠',
+ '' => '爵',
+ '' => '牆',
+ '' => '獰',
+ '' => '獲',
+ '' => '璩',
+ '' => '環',
+ '' => '璦',
+ '' => '璨',
+ '' => '癆',
+ '' => '療',
+ '' => '癌',
+ '' => '盪',
+ '' => '瞳',
+ '' => '瞪',
+ '' => '瞰',
+ '' => '瞬',
+ '@' => '瞧',
+ 'A' => '瞭',
+ 'B' => '矯',
+ 'C' => '磷',
+ 'D' => '磺',
+ 'E' => '磴',
+ 'F' => '磯',
+ 'G' => '礁',
+ 'H' => '禧',
+ 'I' => '禪',
+ 'J' => '穗',
+ 'K' => '窿',
+ 'L' => '簇',
+ 'M' => '簍',
+ 'N' => '篾',
+ 'O' => '篷',
+ 'P' => '簌',
+ 'Q' => '篠',
+ 'R' => '糠',
+ 'S' => '糜',
+ 'T' => '糞',
+ 'U' => '糢',
+ 'V' => '糟',
+ 'W' => '糙',
+ 'X' => '糝',
+ 'Y' => '縮',
+ 'Z' => '績',
+ '[' => '繆',
+ '\\' => '縷',
+ ']' => '縲',
+ '^' => '繃',
+ '_' => '縫',
+ '`' => '總',
+ 'a' => '縱',
+ 'b' => '繅',
+ 'c' => '繁',
+ 'd' => '縴',
+ 'e' => '縹',
+ 'f' => '繈',
+ 'g' => '縵',
+ 'h' => '縿',
+ 'i' => '縯',
+ 'j' => '罄',
+ 'k' => '翳',
+ 'l' => '翼',
+ 'm' => '聱',
+ 'n' => '聲',
+ 'o' => '聰',
+ 'p' => '聯',
+ 'q' => '聳',
+ 'r' => '臆',
+ 's' => '臃',
+ 't' => '膺',
+ 'u' => '臂',
+ 'v' => '臀',
+ 'w' => '膿',
+ 'x' => '膽',
+ 'y' => '臉',
+ 'z' => '膾',
+ '{' => '臨',
+ '|' => '舉',
+ '}' => '艱',
+ '~' => '薪',
+ '' => '薄',
+ '' => '蕾',
+ '' => '薜',
+ '' => '薑',
+ '' => '薔',
+ '' => '薯',
+ '' => '薛',
+ '' => '薇',
+ '' => '薨',
+ '' => '薊',
+ '' => '虧',
+ '' => '蟀',
+ '' => '蟑',
+ '' => '螳',
+ '' => '蟒',
+ '' => '蟆',
+ '' => '螫',
+ '' => '螻',
+ '' => '螺',
+ '' => '蟈',
+ '' => '蟋',
+ '' => '褻',
+ '' => '褶',
+ '' => '襄',
+ '' => '褸',
+ '' => '褽',
+ '' => '覬',
+ '' => '謎',
+ '' => '謗',
+ '' => '謙',
+ '' => '講',
+ '' => '謊',
+ '' => '謠',
+ '' => '謝',
+ '' => '謄',
+ '' => '謐',
+ '' => '豁',
+ '' => '谿',
+ '' => '豳',
+ '' => '賺',
+ '' => '賽',
+ '' => '購',
+ '' => '賸',
+ '' => '賻',
+ '' => '趨',
+ '' => '蹉',
+ '' => '蹋',
+ '' => '蹈',
+ '' => '蹊',
+ '' => '轄',
+ '' => '輾',
+ '' => '轂',
+ '' => '轅',
+ '' => '輿',
+ '' => '避',
+ '' => '遽',
+ '' => '還',
+ '' => '邁',
+ '' => '邂',
+ '' => '邀',
+ '' => '鄹',
+ '' => '醣',
+ '' => '醞',
+ '' => '醜',
+ '' => '鍍',
+ '' => '鎂',
+ '' => '錨',
+ '' => '鍵',
+ '' => '鍊',
+ '' => '鍥',
+ '' => '鍋',
+ '' => '錘',
+ '' => '鍾',
+ '' => '鍬',
+ '' => '鍛',
+ '' => '鍰',
+ '' => '鍚',
+ '' => '鍔',
+ '' => '闊',
+ '' => '闋',
+ '' => '闌',
+ '' => '闈',
+ '' => '闆',
+ '' => '隱',
+ '' => '隸',
+ '' => '雖',
+ '' => '霜',
+ '' => '霞',
+ '' => '鞠',
+ '' => '韓',
+ '' => '顆',
+ '' => '颶',
+ '' => '餵',
+ '' => '騁',
+ '@' => '駿',
+ 'A' => '鮮',
+ 'B' => '鮫',
+ 'C' => '鮪',
+ 'D' => '鮭',
+ 'E' => '鴻',
+ 'F' => '鴿',
+ 'G' => '麋',
+ 'H' => '黏',
+ 'I' => '點',
+ 'J' => '黜',
+ 'K' => '黝',
+ 'L' => '黛',
+ 'M' => '鼾',
+ 'N' => '齋',
+ 'O' => '叢',
+ 'P' => '嚕',
+ 'Q' => '嚮',
+ 'R' => '壙',
+ 'S' => '壘',
+ 'T' => '嬸',
+ 'U' => '彝',
+ 'V' => '懣',
+ 'W' => '戳',
+ 'X' => '擴',
+ 'Y' => '擲',
+ 'Z' => '擾',
+ '[' => '攆',
+ '\\' => '擺',
+ ']' => '擻',
+ '^' => '擷',
+ '_' => '斷',
+ '`' => '曜',
+ 'a' => '朦',
+ 'b' => '檳',
+ 'c' => '檬',
+ 'd' => '櫃',
+ 'e' => '檻',
+ 'f' => '檸',
+ 'g' => '櫂',
+ 'h' => '檮',
+ 'i' => '檯',
+ 'j' => '歟',
+ 'k' => '歸',
+ 'l' => '殯',
+ 'm' => '瀉',
+ 'n' => '瀋',
+ 'o' => '濾',
+ 'p' => '瀆',
+ 'q' => '濺',
+ 'r' => '瀑',
+ 's' => '瀏',
+ 't' => '燻',
+ 'u' => '燼',
+ 'v' => '燾',
+ 'w' => '燸',
+ 'x' => '獷',
+ 'y' => '獵',
+ 'z' => '璧',
+ '{' => '璿',
+ '|' => '甕',
+ '}' => '癖',
+ '~' => '癘',
+ '¡' => '癒',
+ '¢' => '瞽',
+ '£' => '瞿',
+ '¤' => '瞻',
+ '¥' => '瞼',
+ '¦' => '礎',
+ '§' => '禮',
+ '¨' => '穡',
+ '©' => '穢',
+ 'ª' => '穠',
+ '«' => '竄',
+ '¬' => '竅',
+ '' => '簫',
+ '®' => '簧',
+ '¯' => '簪',
+ '°' => '簞',
+ '±' => '簣',
+ '²' => '簡',
+ '³' => '糧',
+ '´' => '織',
+ 'µ' => '繕',
+ '¶' => '繞',
+ '·' => '繚',
+ '¸' => '繡',
+ '¹' => '繒',
+ 'º' => '繙',
+ '»' => '罈',
+ '¼' => '翹',
+ '½' => '翻',
+ '¾' => '職',
+ '¿' => '聶',
+ '' => '臍',
+ '' => '臏',
+ '' => '舊',
+ '' => '藏',
+ '' => '薩',
+ '' => '藍',
+ '' => '藐',
+ '' => '藉',
+ '' => '薰',
+ '' => '薺',
+ '' => '薹',
+ '' => '薦',
+ '' => '蟯',
+ '' => '蟬',
+ '' => '蟲',
+ '' => '蟠',
+ '' => '覆',
+ '' => '覲',
+ '' => '觴',
+ '' => '謨',
+ '' => '謹',
+ '' => '謬',
+ '' => '謫',
+ '' => '豐',
+ '' => '贅',
+ '' => '蹙',
+ '' => '蹣',
+ '' => '蹦',
+ '' => '蹤',
+ '' => '蹟',
+ '' => '蹕',
+ '' => '軀',
+ '' => '轉',
+ '' => '轍',
+ '' => '邇',
+ '' => '邃',
+ '' => '邈',
+ '' => '醫',
+ '' => '醬',
+ '' => '釐',
+ '' => '鎔',
+ '' => '鎊',
+ '' => '鎖',
+ '' => '鎢',
+ '' => '鎳',
+ '' => '鎮',
+ '' => '鎬',
+ '' => '鎰',
+ '' => '鎘',
+ '' => '鎚',
+ '' => '鎗',
+ '' => '闔',
+ '' => '闖',
+ '' => '闐',
+ '' => '闕',
+ '' => '離',
+ '' => '雜',
+ '' => '雙',
+ '' => '雛',
+ '' => '雞',
+ '' => '霤',
+ '' => '鞣',
+ '' => '鞦',
+ '@' => '鞭',
+ 'A' => '韹',
+ 'B' => '額',
+ 'C' => '顏',
+ 'D' => '題',
+ 'E' => '顎',
+ 'F' => '顓',
+ 'G' => '颺',
+ 'H' => '餾',
+ 'I' => '餿',
+ 'J' => '餽',
+ 'K' => '餮',
+ 'L' => '馥',
+ 'M' => '騎',
+ 'N' => '髁',
+ 'O' => '鬃',
+ 'P' => '鬆',
+ 'Q' => '魏',
+ 'R' => '魎',
+ 'S' => '魍',
+ 'T' => '鯊',
+ 'U' => '鯉',
+ 'V' => '鯽',
+ 'W' => '鯈',
+ 'X' => '鯀',
+ 'Y' => '鵑',
+ 'Z' => '鵝',
+ '[' => '鵠',
+ '\\' => '黠',
+ ']' => '鼕',
+ '^' => '鼬',
+ '_' => '儳',
+ '`' => '嚥',
+ 'a' => '壞',
+ 'b' => '壟',
+ 'c' => '壢',
+ 'd' => '寵',
+ 'e' => '龐',
+ 'f' => '廬',
+ 'g' => '懲',
+ 'h' => '懷',
+ 'i' => '懶',
+ 'j' => '懵',
+ 'k' => '攀',
+ 'l' => '攏',
+ 'm' => '曠',
+ 'n' => '曝',
+ 'o' => '櫥',
+ 'p' => '櫝',
+ 'q' => '櫚',
+ 'r' => '櫓',
+ 's' => '瀛',
+ 't' => '瀟',
+ 'u' => '瀨',
+ 'v' => '瀚',
+ 'w' => '瀝',
+ 'x' => '瀕',
+ 'y' => '瀘',
+ 'z' => '爆',
+ '{' => '爍',
+ '|' => '牘',
+ '}' => '犢',
+ '~' => '獸',
+ 'á' => '獺',
+ 'â' => '璽',
+ 'ã' => '瓊',
+ 'ä' => '瓣',
+ 'å' => '疇',
+ 'æ' => '疆',
+ 'ç' => '癟',
+ 'è' => '癡',
+ 'é' => '矇',
+ 'ê' => '礙',
+ 'ë' => '禱',
+ 'ì' => '穫',
+ 'í' => '穩',
+ 'î' => '簾',
+ 'ï' => '簿',
+ 'ð' => '簸',
+ 'ñ' => '簽',
+ 'ò' => '簷',
+ 'ó' => '籀',
+ 'ô' => '繫',
+ 'õ' => '繭',
+ 'ö' => '繹',
+ '÷' => '繩',
+ 'ø' => '繪',
+ 'ù' => '羅',
+ 'ú' => '繳',
+ 'û' => '羶',
+ 'ü' => '羹',
+ 'ý' => '羸',
+ 'þ' => '臘',
+ 'ÿ' => '藩',
+ '' => '藝',
+ '' => '藪',
+ '' => '藕',
+ '' => '藤',
+ '' => '藥',
+ '' => '藷',
+ '' => '蟻',
+ '' => '蠅',
+ '' => '蠍',
+ '' => '蟹',
+ '' => '蟾',
+ '' => '襠',
+ '' => '襟',
+ '' => '襖',
+ '' => '襞',
+ '' => '譁',
+ '' => '譜',
+ '' => '識',
+ '' => '證',
+ '' => '譚',
+ '' => '譎',
+ '' => '譏',
+ '' => '譆',
+ '' => '譙',
+ '' => '贈',
+ '' => '贊',
+ '' => '蹼',
+ '' => '蹲',
+ '' => '躇',
+ '' => '蹶',
+ '' => '蹬',
+ '' => '蹺',
+ '' => '蹴',
+ '' => '轔',
+ '' => '轎',
+ '' => '辭',
+ '' => '邊',
+ '' => '邋',
+ '' => '醱',
+ '' => '醮',
+ '' => '鏡',
+ '' => '鏑',
+ '' => '鏟',
+ '' => '鏃',
+ '' => '鏈',
+ '' => '鏜',
+ '' => '鏝',
+ '' => '鏖',
+ '' => '鏢',
+ '' => '鏍',
+ '' => '鏘',
+ '' => '鏤',
+ '' => '鏗',
+ '' => '鏨',
+ '' => '關',
+ '' => '隴',
+ '' => '難',
+ '' => '霪',
+ '' => '霧',
+ '' => '靡',
+ '' => '韜',
+ '' => '韻',
+ '' => '類',
+ '@' => '願',
+ 'A' => '顛',
+ 'B' => '颼',
+ 'C' => '饅',
+ 'D' => '饉',
+ 'E' => '騖',
+ 'F' => '騙',
+ 'G' => '鬍',
+ 'H' => '鯨',
+ 'I' => '鯧',
+ 'J' => '鯖',
+ 'K' => '鯛',
+ 'L' => '鶉',
+ 'M' => '鵡',
+ 'N' => '鵲',
+ 'O' => '鵪',
+ 'P' => '鵬',
+ 'Q' => '麒',
+ 'R' => '麗',
+ 'S' => '麓',
+ 'T' => '麴',
+ 'U' => '勸',
+ 'V' => '嚨',
+ 'W' => '嚷',
+ 'X' => '嚶',
+ 'Y' => '嚴',
+ 'Z' => '嚼',
+ '[' => '壤',
+ '\\' => '孀',
+ ']' => '孃',
+ '^' => '孽',
+ '_' => '寶',
+ '`' => '巉',
+ 'a' => '懸',
+ 'b' => '懺',
+ 'c' => '攘',
+ 'd' => '攔',
+ 'e' => '攙',
+ 'f' => '曦',
+ 'g' => '朧',
+ 'h' => '櫬',
+ 'i' => '瀾',
+ 'j' => '瀰',
+ 'k' => '瀲',
+ 'l' => '爐',
+ 'm' => '獻',
+ 'n' => '瓏',
+ 'o' => '癢',
+ 'p' => '癥',
+ 'q' => '礦',
+ 'r' => '礪',
+ 's' => '礬',
+ 't' => '礫',
+ 'u' => '竇',
+ 'v' => '競',
+ 'w' => '籌',
+ 'x' => '籃',
+ 'y' => '籍',
+ 'z' => '糯',
+ '{' => '糰',
+ '|' => '辮',
+ '}' => '繽',
+ '~' => '繼',
+ 'ġ' => '纂',
+ 'Ģ' => '罌',
+ 'ģ' => '耀',
+ 'Ĥ' => '臚',
+ 'ĥ' => '艦',
+ 'Ħ' => '藻',
+ 'ħ' => '藹',
+ 'Ĩ' => '蘑',
+ 'ĩ' => '藺',
+ 'Ī' => '蘆',
+ 'ī' => '蘋',
+ 'Ĭ' => '蘇',
+ 'ĭ' => '蘊',
+ 'Į' => '蠔',
+ 'į' => '蠕',
+ 'İ' => '襤',
+ 'ı' => '覺',
+ 'IJ' => '觸',
+ 'ij' => '議',
+ 'Ĵ' => '譬',
+ 'ĵ' => '警',
+ 'Ķ' => '譯',
+ 'ķ' => '譟',
+ 'ĸ' => '譫',
+ 'Ĺ' => '贏',
+ 'ĺ' => '贍',
+ 'Ļ' => '躉',
+ 'ļ' => '躁',
+ 'Ľ' => '躅',
+ 'ľ' => '躂',
+ 'Ŀ' => '醴',
+ '' => '釋',
+ '' => '鐘',
+ '' => '鐃',
+ '' => '鏽',
+ '' => '闡',
+ '' => '霰',
+ '' => '飄',
+ '' => '饒',
+ '' => '饑',
+ '' => '馨',
+ '' => '騫',
+ '' => '騰',
+ '' => '騷',
+ '' => '騵',
+ '' => '鰓',
+ '' => '鰍',
+ '' => '鹹',
+ '' => '麵',
+ '' => '黨',
+ '' => '鼯',
+ '' => '齟',
+ '' => '齣',
+ '' => '齡',
+ '' => '儷',
+ '' => '儸',
+ '' => '囁',
+ '' => '囀',
+ '' => '囂',
+ '' => '夔',
+ '' => '屬',
+ '' => '巍',
+ '' => '懼',
+ '' => '懾',
+ '' => '攝',
+ '' => '攜',
+ '' => '斕',
+ '' => '曩',
+ '' => '櫻',
+ '' => '欄',
+ '' => '櫺',
+ '' => '殲',
+ '' => '灌',
+ '' => '爛',
+ '' => '犧',
+ '' => '瓖',
+ '' => '瓔',
+ '' => '癩',
+ '' => '矓',
+ '' => '籐',
+ '' => '纏',
+ '' => '續',
+ '' => '羼',
+ '' => '蘗',
+ '' => '蘭',
+ '' => '蘚',
+ '' => '蠣',
+ '' => '蠢',
+ '' => '蠡',
+ '' => '蠟',
+ '' => '襪',
+ '' => '襬',
+ '' => '覽',
+ '' => '譴',
+ '@' => '護',
+ 'A' => '譽',
+ 'B' => '贓',
+ 'C' => '躊',
+ 'D' => '躍',
+ 'E' => '躋',
+ 'F' => '轟',
+ 'G' => '辯',
+ 'H' => '醺',
+ 'I' => '鐮',
+ 'J' => '鐳',
+ 'K' => '鐵',
+ 'L' => '鐺',
+ 'M' => '鐸',
+ 'N' => '鐲',
+ 'O' => '鐫',
+ 'P' => '闢',
+ 'Q' => '霸',
+ 'R' => '霹',
+ 'S' => '露',
+ 'T' => '響',
+ 'U' => '顧',
+ 'V' => '顥',
+ 'W' => '饗',
+ 'X' => '驅',
+ 'Y' => '驃',
+ 'Z' => '驀',
+ '[' => '騾',
+ '\\' => '髏',
+ ']' => '魔',
+ '^' => '魑',
+ '_' => '鰭',
+ '`' => '鰥',
+ 'a' => '鶯',
+ 'b' => '鶴',
+ 'c' => '鷂',
+ 'd' => '鶸',
+ 'e' => '麝',
+ 'f' => '黯',
+ 'g' => '鼙',
+ 'h' => '齜',
+ 'i' => '齦',
+ 'j' => '齧',
+ 'k' => '儼',
+ 'l' => '儻',
+ 'm' => '囈',
+ 'n' => '囊',
+ 'o' => '囉',
+ 'p' => '孿',
+ 'q' => '巔',
+ 'r' => '巒',
+ 's' => '彎',
+ 't' => '懿',
+ 'u' => '攤',
+ 'v' => '權',
+ 'w' => '歡',
+ 'x' => '灑',
+ 'y' => '灘',
+ 'z' => '玀',
+ '{' => '瓤',
+ '|' => '疊',
+ '}' => '癮',
+ '~' => '癬',
+ 'š' => '禳',
+ 'Ţ' => '籠',
+ 'ţ' => '籟',
+ 'Ť' => '聾',
+ 'ť' => '聽',
+ 'Ŧ' => '臟',
+ 'ŧ' => '襲',
+ 'Ũ' => '襯',
+ 'ũ' => '觼',
+ 'Ū' => '讀',
+ 'ū' => '贖',
+ 'Ŭ' => '贗',
+ 'ŭ' => '躑',
+ 'Ů' => '躓',
+ 'ů' => '轡',
+ 'Ű' => '酈',
+ 'ű' => '鑄',
+ 'Ų' => '鑑',
+ 'ų' => '鑒',
+ 'Ŵ' => '霽',
+ 'ŵ' => '霾',
+ 'Ŷ' => '韃',
+ 'ŷ' => '韁',
+ 'Ÿ' => '顫',
+ 'Ź' => '饕',
+ 'ź' => '驕',
+ 'Ż' => '驍',
+ 'ż' => '髒',
+ 'Ž' => '鬚',
+ 'ž' => '鱉',
+ 'ſ' => '鰱',
+ '' => '鰾',
+ '' => '鰻',
+ '' => '鷓',
+ '' => '鷗',
+ '' => '鼴',
+ '' => '齬',
+ '' => '齪',
+ '' => '龔',
+ '' => '囌',
+ '' => '巖',
+ '' => '戀',
+ '' => '攣',
+ '' => '攫',
+ '' => '攪',
+ '' => '曬',
+ '' => '欐',
+ '' => '瓚',
+ '' => '竊',
+ '' => '籤',
+ '' => '籣',
+ '' => '籥',
+ '' => '纓',
+ '' => '纖',
+ '' => '纔',
+ '' => '臢',
+ '' => '蘸',
+ '' => '蘿',
+ '' => '蠱',
+ '' => '變',
+ '' => '邐',
+ '' => '邏',
+ '' => '鑣',
+ '' => '鑠',
+ '' => '鑤',
+ '' => '靨',
+ '' => '顯',
+ '' => '饜',
+ '' => '驚',
+ '' => '驛',
+ '' => '驗',
+ '' => '髓',
+ '' => '體',
+ '' => '髑',
+ '' => '鱔',
+ '' => '鱗',
+ '' => '鱖',
+ '' => '鷥',
+ '' => '麟',
+ '' => '黴',
+ '' => '囑',
+ '' => '壩',
+ '' => '攬',
+ '' => '灞',
+ '' => '癱',
+ '' => '癲',
+ '' => '矗',
+ '' => '罐',
+ '' => '羈',
+ '' => '蠶',
+ '' => '蠹',
+ '' => '衢',
+ '' => '讓',
+ '' => '讒',
+ '@' => '讖',
+ 'A' => '艷',
+ 'B' => '贛',
+ 'C' => '釀',
+ 'D' => '鑪',
+ 'E' => '靂',
+ 'F' => '靈',
+ 'G' => '靄',
+ 'H' => '韆',
+ 'I' => '顰',
+ 'J' => '驟',
+ 'K' => '鬢',
+ 'L' => '魘',
+ 'M' => '鱟',
+ 'N' => '鷹',
+ 'O' => '鷺',
+ 'P' => '鹼',
+ 'Q' => '鹽',
+ 'R' => '鼇',
+ 'S' => '齷',
+ 'T' => '齲',
+ 'U' => '廳',
+ 'V' => '欖',
+ 'W' => '灣',
+ 'X' => '籬',
+ 'Y' => '籮',
+ 'Z' => '蠻',
+ '[' => '觀',
+ '\\' => '躡',
+ ']' => '釁',
+ '^' => '鑲',
+ '_' => '鑰',
+ '`' => '顱',
+ 'a' => '饞',
+ 'b' => '髖',
+ 'c' => '鬣',
+ 'd' => '黌',
+ 'e' => '灤',
+ 'f' => '矚',
+ 'g' => '讚',
+ 'h' => '鑷',
+ 'i' => '韉',
+ 'j' => '驢',
+ 'k' => '驥',
+ 'l' => '纜',
+ 'm' => '讜',
+ 'n' => '躪',
+ 'o' => '釅',
+ 'p' => '鑽',
+ 'q' => '鑾',
+ 'r' => '鑼',
+ 's' => '鱷',
+ 't' => '鱸',
+ 'u' => '黷',
+ 'v' => '豔',
+ 'w' => '鑿',
+ 'x' => '鸚',
+ 'y' => '爨',
+ 'z' => '驪',
+ '{' => '鬱',
+ '|' => '鸛',
+ '}' => '鸞',
+ '~' => '籲',
+ 'ơ' => 'ヾ',
+ 'Ƣ' => 'ゝ',
+ 'ƣ' => 'ゞ',
+ 'Ƥ' => '々',
+ 'ƥ' => 'ぁ',
+ 'Ʀ' => 'あ',
+ 'Ƨ' => 'ぃ',
+ 'ƨ' => 'い',
+ 'Ʃ' => 'ぅ',
+ 'ƪ' => 'う',
+ 'ƫ' => 'ぇ',
+ 'Ƭ' => 'え',
+ 'ƭ' => 'ぉ',
+ 'Ʈ' => 'お',
+ 'Ư' => 'か',
+ 'ư' => 'が',
+ 'Ʊ' => 'き',
+ 'Ʋ' => 'ぎ',
+ 'Ƴ' => 'く',
+ 'ƴ' => 'ぐ',
+ 'Ƶ' => 'け',
+ 'ƶ' => 'げ',
+ 'Ʒ' => 'こ',
+ 'Ƹ' => 'ご',
+ 'ƹ' => 'さ',
+ 'ƺ' => 'ざ',
+ 'ƻ' => 'し',
+ 'Ƽ' => 'じ',
+ 'ƽ' => 'す',
+ 'ƾ' => 'ず',
+ 'ƿ' => 'せ',
+ '' => 'ぜ',
+ '' => 'そ',
+ '' => 'ぞ',
+ '' => 'た',
+ '' => 'だ',
+ '' => 'ち',
+ '' => 'ぢ',
+ '' => 'っ',
+ '' => 'つ',
+ '' => 'づ',
+ '' => 'て',
+ '' => 'で',
+ '' => 'と',
+ '' => 'ど',
+ '' => 'な',
+ '' => 'に',
+ '' => 'ぬ',
+ '' => 'ね',
+ '' => 'の',
+ '' => 'は',
+ '' => 'ば',
+ '' => 'ぱ',
+ '' => 'ひ',
+ '' => 'び',
+ '' => 'ぴ',
+ '' => 'ふ',
+ '' => 'ぶ',
+ '' => 'ぷ',
+ '' => 'へ',
+ '' => 'べ',
+ '' => 'ぺ',
+ '' => 'ほ',
+ '' => 'ぼ',
+ '' => 'ぽ',
+ '' => 'ま',
+ '' => 'み',
+ '' => 'む',
+ '' => 'め',
+ '' => 'も',
+ '' => 'ゃ',
+ '' => 'や',
+ '' => 'ゅ',
+ '' => 'ゆ',
+ '' => 'ょ',
+ '' => 'よ',
+ '' => 'ら',
+ '' => 'り',
+ '' => 'る',
+ '' => 'れ',
+ '' => 'ろ',
+ '' => 'ゎ',
+ '' => 'わ',
+ '' => 'ゐ',
+ '' => 'ゑ',
+ '' => 'を',
+ '' => 'ん',
+ '' => 'ァ',
+ '' => 'ア',
+ '' => 'ィ',
+ '' => 'イ',
+ '' => 'ゥ',
+ '' => 'ウ',
+ '' => 'ェ',
+ '@' => 'エ',
+ 'A' => 'ォ',
+ 'B' => 'オ',
+ 'C' => 'カ',
+ 'D' => 'ガ',
+ 'E' => 'キ',
+ 'F' => 'ギ',
+ 'G' => 'ク',
+ 'H' => 'グ',
+ 'I' => 'ケ',
+ 'J' => 'ゲ',
+ 'K' => 'コ',
+ 'L' => 'ゴ',
+ 'M' => 'サ',
+ 'N' => 'ザ',
+ 'O' => 'シ',
+ 'P' => 'ジ',
+ 'Q' => 'ス',
+ 'R' => 'ズ',
+ 'S' => 'セ',
+ 'T' => 'ゼ',
+ 'U' => 'ソ',
+ 'V' => 'ゾ',
+ 'W' => 'タ',
+ 'X' => 'ダ',
+ 'Y' => 'チ',
+ 'Z' => 'ヂ',
+ '[' => 'ッ',
+ '\\' => 'ツ',
+ ']' => 'ヅ',
+ '^' => 'テ',
+ '_' => 'デ',
+ '`' => 'ト',
+ 'a' => 'ド',
+ 'b' => 'ナ',
+ 'c' => 'ニ',
+ 'd' => 'ヌ',
+ 'e' => 'ネ',
+ 'f' => 'ノ',
+ 'g' => 'ハ',
+ 'h' => 'バ',
+ 'i' => 'パ',
+ 'j' => 'ヒ',
+ 'k' => 'ビ',
+ 'l' => 'ピ',
+ 'm' => 'フ',
+ 'n' => 'ブ',
+ 'o' => 'プ',
+ 'p' => 'ヘ',
+ 'q' => 'ベ',
+ 'r' => 'ペ',
+ 's' => 'ホ',
+ 't' => 'ボ',
+ 'u' => 'ポ',
+ 'v' => 'マ',
+ 'w' => 'ミ',
+ 'x' => 'ム',
+ 'y' => 'メ',
+ 'z' => 'モ',
+ '{' => 'ャ',
+ '|' => 'ヤ',
+ '}' => 'ュ',
+ '~' => 'ユ',
+ 'ǡ' => 'ョ',
+ 'Ǣ' => 'ヨ',
+ 'ǣ' => 'ラ',
+ 'Ǥ' => 'リ',
+ 'ǥ' => 'ル',
+ 'Ǧ' => 'レ',
+ 'ǧ' => 'ロ',
+ 'Ǩ' => 'ヮ',
+ 'ǩ' => 'ワ',
+ 'Ǫ' => 'ヰ',
+ 'ǫ' => 'ヱ',
+ 'Ǭ' => 'ヲ',
+ 'ǭ' => 'ン',
+ 'Ǯ' => 'ヴ',
+ 'ǯ' => 'ヵ',
+ 'ǰ' => 'ヶ',
+ 'DZ' => 'Д',
+ 'Dz' => 'Е',
+ 'dz' => 'Ё',
+ 'Ǵ' => 'Ж',
+ 'ǵ' => 'З',
+ 'Ƕ' => 'И',
+ 'Ƿ' => 'Й',
+ 'Ǹ' => 'К',
+ 'ǹ' => 'Л',
+ 'Ǻ' => 'М',
+ 'ǻ' => 'У',
+ 'Ǽ' => 'Ф',
+ 'ǽ' => 'Х',
+ 'Ǿ' => 'Ц',
+ 'ǿ' => 'Ч',
+ '' => 'Ш',
+ '' => 'Щ',
+ '' => 'Ъ',
+ '' => 'Ы',
+ '' => 'Ь',
+ '' => 'Э',
+ '' => 'Ю',
+ '' => 'Я',
+ '' => 'а',
+ '' => 'б',
+ '' => 'в',
+ '' => 'г',
+ '' => 'д',
+ '' => 'е',
+ '' => 'ё',
+ '' => 'ж',
+ '' => 'з',
+ '' => 'и',
+ '' => 'й',
+ '' => 'к',
+ '' => 'л',
+ '' => 'м',
+ '' => 'н',
+ '' => 'о',
+ '' => 'п',
+ '' => 'р',
+ '' => 'с',
+ '' => 'т',
+ '' => 'у',
+ '' => 'ф',
+ '' => 'х',
+ '' => 'ц',
+ '' => 'ч',
+ '' => 'ш',
+ '' => 'щ',
+ '' => 'ъ',
+ '' => 'ы',
+ '' => 'ь',
+ '' => 'э',
+ '' => 'ю',
+ '' => 'я',
+ '' => '①',
+ '' => '②',
+ '' => '③',
+ '' => '④',
+ '' => '⑤',
+ '' => '⑥',
+ '' => '⑦',
+ '' => '⑧',
+ '' => '⑨',
+ '' => '⑩',
+ '' => '⑴',
+ '' => '⑵',
+ '' => '⑶',
+ '' => '⑷',
+ '' => '⑸',
+ '' => '⑹',
+ '' => '⑺',
+ '' => '⑻',
+ '' => '⑼',
+ '' => '⑽',
+ '@' => '乂',
+ 'A' => '乜',
+ 'B' => '凵',
+ 'C' => '匚',
+ 'D' => '厂',
+ 'E' => '万',
+ 'F' => '丌',
+ 'G' => '乇',
+ 'H' => '亍',
+ 'I' => '囗',
+ 'J' => '兀',
+ 'K' => '屮',
+ 'L' => '彳',
+ 'M' => '丏',
+ 'N' => '冇',
+ 'O' => '与',
+ 'P' => '丮',
+ 'Q' => '亓',
+ 'R' => '仂',
+ 'S' => '仉',
+ 'T' => '仈',
+ 'U' => '冘',
+ 'V' => '勼',
+ 'W' => '卬',
+ 'X' => '厹',
+ 'Y' => '圠',
+ 'Z' => '夃',
+ '[' => '夬',
+ '\\' => '尐',
+ ']' => '巿',
+ '^' => '旡',
+ '_' => '殳',
+ '`' => '毌',
+ 'a' => '气',
+ 'b' => '爿',
+ 'c' => '丱',
+ 'd' => '丼',
+ 'e' => '仨',
+ 'f' => '仜',
+ 'g' => '仩',
+ 'h' => '仡',
+ 'i' => '仝',
+ 'j' => '仚',
+ 'k' => '刌',
+ 'l' => '匜',
+ 'm' => '卌',
+ 'n' => '圢',
+ 'o' => '圣',
+ 'p' => '夗',
+ 'q' => '夯',
+ 'r' => '宁',
+ 's' => '宄',
+ 't' => '尒',
+ 'u' => '尻',
+ 'v' => '屴',
+ 'w' => '屳',
+ 'x' => '帄',
+ 'y' => '庀',
+ 'z' => '庂',
+ '{' => '忉',
+ '|' => '戉',
+ '}' => '扐',
+ '~' => '氕',
+ 'ɡ' => '氶',
+ 'ɢ' => '汃',
+ 'ɣ' => '氿',
+ 'ɤ' => '氻',
+ 'ɥ' => '犮',
+ 'ɦ' => '犰',
+ 'ɧ' => '玊',
+ 'ɨ' => '禸',
+ 'ɩ' => '肊',
+ 'ɪ' => '阞',
+ 'ɫ' => '伎',
+ 'ɬ' => '优',
+ 'ɭ' => '伬',
+ 'ɮ' => '仵',
+ 'ɯ' => '伔',
+ 'ɰ' => '仱',
+ 'ɱ' => '伀',
+ 'ɲ' => '价',
+ 'ɳ' => '伈',
+ 'ɴ' => '伝',
+ 'ɵ' => '伂',
+ 'ɶ' => '伅',
+ 'ɷ' => '伢',
+ 'ɸ' => '伓',
+ 'ɹ' => '伄',
+ 'ɺ' => '仴',
+ 'ɻ' => '伒',
+ 'ɼ' => '冱',
+ 'ɽ' => '刓',
+ 'ɾ' => '刉',
+ 'ɿ' => '刐',
+ '' => '劦',
+ '' => '匢',
+ '' => '匟',
+ '' => '卍',
+ '' => '厊',
+ '' => '吇',
+ '' => '囡',
+ '' => '囟',
+ '' => '圮',
+ '' => '圪',
+ '' => '圴',
+ '' => '夼',
+ '' => '妀',
+ '' => '奼',
+ '' => '妅',
+ '' => '奻',
+ '' => '奾',
+ '' => '奷',
+ '' => '奿',
+ '' => '孖',
+ '' => '尕',
+ '' => '尥',
+ '' => '屼',
+ '' => '屺',
+ '' => '屻',
+ '' => '屾',
+ '' => '巟',
+ '' => '幵',
+ '' => '庄',
+ '' => '异',
+ '' => '弚',
+ '' => '彴',
+ '' => '忕',
+ '' => '忔',
+ '' => '忏',
+ '' => '扜',
+ '' => '扞',
+ '' => '扤',
+ '' => '扡',
+ '' => '扦',
+ '' => '扢',
+ '' => '扙',
+ '' => '扠',
+ '' => '扚',
+ '' => '扥',
+ '' => '旯',
+ '' => '旮',
+ '' => '朾',
+ '' => '朹',
+ '' => '朸',
+ '' => '朻',
+ '' => '机',
+ '' => '朿',
+ '' => '朼',
+ '' => '朳',
+ '' => '氘',
+ '' => '汆',
+ '' => '汒',
+ '' => '汜',
+ '' => '汏',
+ '' => '汊',
+ '' => '汔',
+ '' => '汋',
+ '@' => '汌',
+ 'A' => '灱',
+ 'B' => '牞',
+ 'C' => '犴',
+ 'D' => '犵',
+ 'E' => '玎',
+ 'F' => '甪',
+ 'G' => '癿',
+ 'H' => '穵',
+ 'I' => '网',
+ 'J' => '艸',
+ 'K' => '艼',
+ 'L' => '芀',
+ 'M' => '艽',
+ 'N' => '艿',
+ 'O' => '虍',
+ 'P' => '襾',
+ 'Q' => '邙',
+ 'R' => '邗',
+ 'S' => '邘',
+ 'T' => '邛',
+ 'U' => '邔',
+ 'V' => '阢',
+ 'W' => '阤',
+ 'X' => '阠',
+ 'Y' => '阣',
+ 'Z' => '佖',
+ '[' => '伻',
+ '\\' => '佢',
+ ']' => '佉',
+ '^' => '体',
+ '_' => '佤',
+ '`' => '伾',
+ 'a' => '佧',
+ 'b' => '佒',
+ 'c' => '佟',
+ 'd' => '佁',
+ 'e' => '佘',
+ 'f' => '伭',
+ 'g' => '伳',
+ 'h' => '伿',
+ 'i' => '佡',
+ 'j' => '冏',
+ 'k' => '冹',
+ 'l' => '刜',
+ 'm' => '刞',
+ 'n' => '刡',
+ 'o' => '劭',
+ 'p' => '劮',
+ 'q' => '匉',
+ 'r' => '卣',
+ 's' => '卲',
+ 't' => '厎',
+ 'u' => '厏',
+ 'v' => '吰',
+ 'w' => '吷',
+ 'x' => '吪',
+ 'y' => '呔',
+ 'z' => '呅',
+ '{' => '吙',
+ '|' => '吜',
+ '}' => '吥',
+ '~' => '吘',
+ 'ʡ' => '吽',
+ 'ʢ' => '呏',
+ 'ʣ' => '呁',
+ 'ʤ' => '吨',
+ 'ʥ' => '吤',
+ 'ʦ' => '呇',
+ 'ʧ' => '囮',
+ 'ʨ' => '囧',
+ 'ʩ' => '囥',
+ 'ʪ' => '坁',
+ 'ʫ' => '坅',
+ 'ʬ' => '坌',
+ 'ʭ' => '坉',
+ 'ʮ' => '坋',
+ 'ʯ' => '坒',
+ 'ʰ' => '夆',
+ 'ʱ' => '奀',
+ 'ʲ' => '妦',
+ 'ʳ' => '妘',
+ 'ʴ' => '妠',
+ 'ʵ' => '妗',
+ 'ʶ' => '妎',
+ 'ʷ' => '妢',
+ 'ʸ' => '妐',
+ 'ʹ' => '妏',
+ 'ʺ' => '妧',
+ 'ʻ' => '妡',
+ 'ʼ' => '宎',
+ 'ʽ' => '宒',
+ 'ʾ' => '尨',
+ 'ʿ' => '尪',
+ '' => '岍',
+ '' => '岏',
+ '' => '岈',
+ '' => '岋',
+ '' => '岉',
+ '' => '岒',
+ '' => '岊',
+ '' => '岆',
+ '' => '岓',
+ '' => '岕',
+ '' => '巠',
+ '' => '帊',
+ '' => '帎',
+ '' => '庋',
+ '' => '庉',
+ '' => '庌',
+ '' => '庈',
+ '' => '庍',
+ '' => '弅',
+ '' => '弝',
+ '' => '彸',
+ '' => '彶',
+ '' => '忒',
+ '' => '忑',
+ '' => '忐',
+ '' => '忭',
+ '' => '忨',
+ '' => '忮',
+ '' => '忳',
+ '' => '忡',
+ '' => '忤',
+ '' => '忣',
+ '' => '忺',
+ '' => '忯',
+ '' => '忷',
+ '' => '忻',
+ '' => '怀',
+ '' => '忴',
+ '' => '戺',
+ '' => '抃',
+ '' => '抌',
+ '' => '抎',
+ '' => '抏',
+ '' => '抔',
+ '' => '抇',
+ '' => '扱',
+ '' => '扻',
+ '' => '扺',
+ '' => '扰',
+ '' => '抁',
+ '' => '抈',
+ '' => '扷',
+ '' => '扽',
+ '' => '扲',
+ '' => '扴',
+ '' => '攷',
+ '' => '旰',
+ '' => '旴',
+ '' => '旳',
+ '' => '旲',
+ '' => '旵',
+ '' => '杅',
+ '' => '杇',
+ '@' => '杙',
+ 'A' => '杕',
+ 'B' => '杌',
+ 'C' => '杈',
+ 'D' => '杝',
+ 'E' => '杍',
+ 'F' => '杚',
+ 'G' => '杋',
+ 'H' => '毐',
+ 'I' => '氙',
+ 'J' => '氚',
+ 'K' => '汸',
+ 'L' => '汧',
+ 'M' => '汫',
+ 'N' => '沄',
+ 'O' => '沋',
+ 'P' => '沏',
+ 'Q' => '汱',
+ 'R' => '汯',
+ 'S' => '汩',
+ 'T' => '沚',
+ 'U' => '汭',
+ 'V' => '沇',
+ 'W' => '沕',
+ 'X' => '沜',
+ 'Y' => '汦',
+ 'Z' => '汳',
+ '[' => '汥',
+ '\\' => '汻',
+ ']' => '沎',
+ '^' => '灴',
+ '_' => '灺',
+ '`' => '牣',
+ 'a' => '犿',
+ 'b' => '犽',
+ 'c' => '狃',
+ 'd' => '狆',
+ 'e' => '狁',
+ 'f' => '犺',
+ 'g' => '狅',
+ 'h' => '玕',
+ 'i' => '玗',
+ 'j' => '玓',
+ 'k' => '玔',
+ 'l' => '玒',
+ 'm' => '町',
+ 'n' => '甹',
+ 'o' => '疔',
+ 'p' => '疕',
+ 'q' => '皁',
+ 'r' => '礽',
+ 's' => '耴',
+ 't' => '肕',
+ 'u' => '肙',
+ 'v' => '肐',
+ 'w' => '肒',
+ 'x' => '肜',
+ 'y' => '芐',
+ 'z' => '芏',
+ '{' => '芅',
+ '|' => '芎',
+ '}' => '芑',
+ '~' => '芓',
+ 'ˡ' => '芊',
+ 'ˢ' => '芃',
+ 'ˣ' => '芄',
+ 'ˤ' => '豸',
+ '˥' => '迉',
+ '˦' => '辿',
+ '˧' => '邟',
+ '˨' => '邡',
+ '˩' => '邥',
+ '˪' => '邞',
+ '˫' => '邧',
+ 'ˬ' => '邠',
+ '˭' => '阰',
+ 'ˮ' => '阨',
+ '˯' => '阯',
+ '˰' => '阭',
+ '˱' => '丳',
+ '˲' => '侘',
+ '˳' => '佼',
+ '˴' => '侅',
+ '˵' => '佽',
+ '˶' => '侀',
+ '˷' => '侇',
+ '˸' => '佶',
+ '˹' => '佴',
+ '˺' => '侉',
+ '˻' => '侄',
+ '˼' => '佷',
+ '˽' => '佌',
+ '˾' => '侗',
+ '˿' => '佪',
+ '' => '侚',
+ '' => '佹',
+ '' => '侁',
+ '' => '佸',
+ '' => '侐',
+ '' => '侜',
+ '' => '侔',
+ '' => '侞',
+ '' => '侒',
+ '' => '侂',
+ '' => '侕',
+ '' => '佫',
+ '' => '佮',
+ '' => '冞',
+ '' => '冼',
+ '' => '冾',
+ '' => '刵',
+ '' => '刲',
+ '' => '刳',
+ '' => '剆',
+ '' => '刱',
+ '' => '劼',
+ '' => '匊',
+ '' => '匋',
+ '' => '匼',
+ '' => '厒',
+ '' => '厔',
+ '' => '咇',
+ '' => '呿',
+ '' => '咁',
+ '' => '咑',
+ '' => '咂',
+ '' => '咈',
+ '' => '呫',
+ '' => '呺',
+ '' => '呾',
+ '' => '呥',
+ '' => '呬',
+ '' => '呴',
+ '' => '呦',
+ '' => '咍',
+ '' => '呯',
+ '' => '呡',
+ '' => '呠',
+ '' => '咘',
+ '' => '呣',
+ '' => '呧',
+ '' => '呤',
+ '' => '囷',
+ '' => '囹',
+ '' => '坯',
+ '' => '坲',
+ '' => '坭',
+ '' => '坫',
+ '' => '坱',
+ '' => '坰',
+ '' => '坶',
+ '' => '垀',
+ '' => '坵',
+ '' => '坻',
+ '' => '坳',
+ '' => '坴',
+ '' => '坢',
+ '@' => '坨',
+ 'A' => '坽',
+ 'B' => '夌',
+ 'C' => '奅',
+ 'D' => '妵',
+ 'E' => '妺',
+ 'F' => '姏',
+ 'G' => '姎',
+ 'H' => '妲',
+ 'I' => '姌',
+ 'J' => '姁',
+ 'K' => '妶',
+ 'L' => '妼',
+ 'M' => '姃',
+ 'N' => '姖',
+ 'O' => '妱',
+ 'P' => '妽',
+ 'Q' => '姀',
+ 'R' => '姈',
+ 'S' => '妴',
+ 'T' => '姇',
+ 'U' => '孢',
+ 'V' => '孥',
+ 'W' => '宓',
+ 'X' => '宕',
+ 'Y' => '屄',
+ 'Z' => '屇',
+ '[' => '岮',
+ '\\' => '岤',
+ ']' => '岠',
+ '^' => '岵',
+ '_' => '岯',
+ '`' => '岨',
+ 'a' => '岬',
+ 'b' => '岟',
+ 'c' => '岣',
+ 'd' => '岭',
+ 'e' => '岢',
+ 'f' => '岪',
+ 'g' => '岧',
+ 'h' => '岝',
+ 'i' => '岥',
+ 'j' => '岶',
+ 'k' => '岰',
+ 'l' => '岦',
+ 'm' => '帗',
+ 'n' => '帔',
+ 'o' => '帙',
+ 'p' => '弨',
+ 'q' => '弢',
+ 'r' => '弣',
+ 's' => '弤',
+ 't' => '彔',
+ 'u' => '徂',
+ 'v' => '彾',
+ 'w' => '彽',
+ 'x' => '忞',
+ 'y' => '忥',
+ 'z' => '怭',
+ '{' => '怦',
+ '|' => '怙',
+ '}' => '怲',
+ '~' => '怋',
+ '̡' => '怴',
+ '̢' => '怊',
+ '̣' => '怗',
+ '̤' => '怳',
+ '̥' => '怚',
+ '̦' => '怞',
+ '̧' => '怬',
+ '̨' => '怢',
+ '̩' => '怍',
+ '̪' => '怐',
+ '̫' => '怮',
+ '̬' => '怓',
+ '̭' => '怑',
+ '̮' => '怌',
+ '̯' => '怉',
+ '̰' => '怜',
+ '̱' => '戔',
+ '̲' => '戽',
+ '̳' => '抭',
+ '̴' => '抴',
+ '̵' => '拑',
+ '̶' => '抾',
+ '̷' => '抪',
+ '̸' => '抶',
+ '̹' => '拊',
+ '̺' => '抮',
+ '̻' => '抳',
+ '̼' => '抯',
+ '̽' => '抻',
+ '̾' => '抩',
+ '̿' => '抰',
+ '' => '抸',
+ '' => '攽',
+ '' => '斨',
+ '' => '斻',
+ '' => '昉',
+ '' => '旼',
+ '' => '昄',
+ '' => '昒',
+ '' => '昈',
+ '' => '旻',
+ '' => '昃',
+ '' => '昋',
+ '' => '昍',
+ '' => '昅',
+ '' => '旽',
+ '' => '昑',
+ '' => '昐',
+ '' => '曶',
+ '' => '朊',
+ '' => '枅',
+ '' => '杬',
+ '' => '枎',
+ '' => '枒',
+ '' => '杶',
+ '' => '杻',
+ '' => '枘',
+ '' => '枆',
+ '' => '构',
+ '' => '杴',
+ '' => '枍',
+ '' => '枌',
+ '' => '杺',
+ '' => '枟',
+ '' => '枑',
+ '' => '枙',
+ '' => '枃',
+ '' => '杽',
+ '' => '极',
+ '' => '杸',
+ '' => '杹',
+ '' => '枔',
+ '' => '欥',
+ '' => '殀',
+ '' => '歾',
+ '' => '毞',
+ '' => '氝',
+ '' => '沓',
+ '' => '泬',
+ '' => '泫',
+ '' => '泮',
+ '' => '泙',
+ '' => '沶',
+ '' => '泔',
+ '' => '沭',
+ '' => '泧',
+ '' => '沷',
+ '' => '泐',
+ '' => '泂',
+ '' => '沺',
+ '' => '泃',
+ '' => '泆',
+ '' => '泭',
+ '' => '泲',
+ '@' => '泒',
+ 'A' => '泝',
+ 'B' => '沴',
+ 'C' => '沊',
+ 'D' => '沝',
+ 'E' => '沀',
+ 'F' => '泞',
+ 'G' => '泀',
+ 'H' => '洰',
+ 'I' => '泍',
+ 'J' => '泇',
+ 'K' => '沰',
+ 'L' => '泹',
+ 'M' => '泏',
+ 'N' => '泩',
+ 'O' => '泑',
+ 'P' => '炔',
+ 'Q' => '炘',
+ 'R' => '炅',
+ 'S' => '炓',
+ 'T' => '炆',
+ 'U' => '炄',
+ 'V' => '炑',
+ 'W' => '炖',
+ 'X' => '炂',
+ 'Y' => '炚',
+ 'Z' => '炃',
+ '[' => '牪',
+ '\\' => '狖',
+ ']' => '狋',
+ '^' => '狘',
+ '_' => '狉',
+ '`' => '狜',
+ 'a' => '狒',
+ 'b' => '狔',
+ 'c' => '狚',
+ 'd' => '狌',
+ 'e' => '狑',
+ 'f' => '玤',
+ 'g' => '玡',
+ 'h' => '玭',
+ 'i' => '玦',
+ 'j' => '玢',
+ 'k' => '玠',
+ 'l' => '玬',
+ 'm' => '玝',
+ 'n' => '瓝',
+ 'o' => '瓨',
+ 'p' => '甿',
+ 'q' => '畀',
+ 'r' => '甾',
+ 's' => '疌',
+ 't' => '疘',
+ 'u' => '皯',
+ 'v' => '盳',
+ 'w' => '盱',
+ 'x' => '盰',
+ 'y' => '盵',
+ 'z' => '矸',
+ '{' => '矼',
+ '|' => '矹',
+ '}' => '矻',
+ '~' => '矺',
+ '͡' => '矷',
+ '͢' => '祂',
+ 'ͣ' => '礿',
+ 'ͤ' => '秅',
+ 'ͥ' => '穸',
+ 'ͦ' => '穻',
+ 'ͧ' => '竻',
+ 'ͨ' => '籵',
+ 'ͩ' => '糽',
+ 'ͪ' => '耵',
+ 'ͫ' => '肏',
+ 'ͬ' => '肮',
+ 'ͭ' => '肣',
+ 'ͮ' => '肸',
+ 'ͯ' => '肵',
+ 'Ͱ' => '肭',
+ 'ͱ' => '舠',
+ 'Ͳ' => '芠',
+ 'ͳ' => '苀',
+ 'ʹ' => '芫',
+ '͵' => '芚',
+ 'Ͷ' => '芘',
+ 'ͷ' => '芛',
+ '' => '芵',
+ '' => '芧',
+ 'ͺ' => '芮',
+ 'ͻ' => '芼',
+ 'ͼ' => '芞',
+ 'ͽ' => '芺',
+ ';' => '芴',
+ 'Ϳ' => '芨',
+ '' => '芡',
+ '' => '芩',
+ '' => '苂',
+ '' => '芤',
+ '' => '苃',
+ '' => '芶',
+ '' => '芢',
+ '' => '虰',
+ '' => '虯',
+ '' => '虭',
+ '' => '虮',
+ '' => '豖',
+ '' => '迒',
+ '' => '迋',
+ '' => '迓',
+ '' => '迍',
+ '' => '迖',
+ '' => '迕',
+ '' => '迗',
+ '' => '邲',
+ '' => '邴',
+ '' => '邯',
+ '' => '邳',
+ '' => '邰',
+ '' => '阹',
+ '' => '阽',
+ '' => '阼',
+ '' => '阺',
+ '' => '陃',
+ '' => '俍',
+ '' => '俅',
+ '' => '俓',
+ '' => '侲',
+ '' => '俉',
+ '' => '俋',
+ '' => '俁',
+ '' => '俔',
+ '' => '俜',
+ '' => '俙',
+ '' => '侻',
+ '' => '侳',
+ '' => '俛',
+ '' => '俇',
+ '' => '俖',
+ '' => '侺',
+ '' => '俀',
+ '' => '侹',
+ '' => '俬',
+ '' => '剄',
+ '' => '剉',
+ '' => '勀',
+ '' => '勂',
+ '' => '匽',
+ '' => '卼',
+ '' => '厗',
+ '' => '厖',
+ '' => '厙',
+ '' => '厘',
+ '' => '咺',
+ '' => '咡',
+ '' => '咭',
+ '' => '咥',
+ '' => '哏',
+ '@' => '哃',
+ 'A' => '茍',
+ 'B' => '咷',
+ 'C' => '咮',
+ 'D' => '哖',
+ 'E' => '咶',
+ 'F' => '哅',
+ 'G' => '哆',
+ 'H' => '咠',
+ 'I' => '呰',
+ 'J' => '咼',
+ 'K' => '咢',
+ 'L' => '咾',
+ 'M' => '呲',
+ 'N' => '哞',
+ 'O' => '咰',
+ 'P' => '垵',
+ 'Q' => '垞',
+ 'R' => '垟',
+ 'S' => '垤',
+ 'T' => '垌',
+ 'U' => '垗',
+ 'V' => '垝',
+ 'W' => '垛',
+ 'X' => '垔',
+ 'Y' => '垘',
+ 'Z' => '垏',
+ '[' => '垙',
+ '\\' => '垥',
+ ']' => '垚',
+ '^' => '垕',
+ '_' => '壴',
+ '`' => '复',
+ 'a' => '奓',
+ 'b' => '姡',
+ 'c' => '姞',
+ 'd' => '姮',
+ 'e' => '娀',
+ 'f' => '姱',
+ 'g' => '姝',
+ 'h' => '姺',
+ 'i' => '姽',
+ 'j' => '姼',
+ 'k' => '姶',
+ 'l' => '姤',
+ 'm' => '姲',
+ 'n' => '姷',
+ 'o' => '姛',
+ 'p' => '姩',
+ 'q' => '姳',
+ 'r' => '姵',
+ 's' => '姠',
+ 't' => '姾',
+ 'u' => '姴',
+ 'v' => '姭',
+ 'w' => '宨',
+ 'x' => '屌',
+ 'y' => '峐',
+ 'z' => '峘',
+ '{' => '峌',
+ '|' => '峗',
+ '}' => '峋',
+ '~' => '峛',
+ 'Ρ' => '峞',
+ '' => '峚',
+ 'Σ' => '峉',
+ 'Τ' => '峇',
+ 'Υ' => '峊',
+ 'Φ' => '峖',
+ 'Χ' => '峓',
+ 'Ψ' => '峔',
+ 'Ω' => '峏',
+ 'Ϊ' => '峈',
+ 'Ϋ' => '峆',
+ 'ά' => '峎',
+ 'έ' => '峟',
+ 'ή' => '峸',
+ 'ί' => '巹',
+ 'ΰ' => '帡',
+ 'α' => '帢',
+ 'β' => '帣',
+ 'γ' => '帠',
+ 'δ' => '帤',
+ 'ε' => '庰',
+ 'ζ' => '庤',
+ 'η' => '庢',
+ 'θ' => '庛',
+ 'ι' => '庣',
+ 'κ' => '庥',
+ 'λ' => '弇',
+ 'μ' => '弮',
+ 'ν' => '彖',
+ 'ξ' => '徆',
+ 'ο' => '怷',
+ '' => '怹',
+ '' => '恔',
+ '' => '恲',
+ '' => '恞',
+ '' => '恅',
+ '' => '恓',
+ '' => '恇',
+ '' => '恉',
+ '' => '恛',
+ '' => '恌',
+ '' => '恀',
+ '' => '恂',
+ '' => '恟',
+ '' => '怤',
+ '' => '恄',
+ '' => '恘',
+ '' => '恦',
+ '' => '恮',
+ '' => '扂',
+ '' => '扃',
+ '' => '拏',
+ '' => '挍',
+ '' => '挋',
+ '' => '拵',
+ '' => '挎',
+ '' => '挃',
+ '' => '拫',
+ '' => '拹',
+ '' => '挏',
+ '' => '挌',
+ '' => '拸',
+ '' => '拶',
+ '' => '挀',
+ '' => '挓',
+ '' => '挔',
+ '' => '拺',
+ '' => '挕',
+ '' => '拻',
+ '' => '拰',
+ '' => '敁',
+ '' => '敃',
+ '' => '斪',
+ '' => '斿',
+ '' => '昶',
+ '' => '昡',
+ '' => '昲',
+ '' => '昵',
+ '' => '昜',
+ '' => '昦',
+ '' => '昢',
+ '' => '昳',
+ '' => '昫',
+ '' => '昺',
+ '' => '昝',
+ '' => '昴',
+ '' => '昹',
+ '' => '昮',
+ '' => '朏',
+ '' => '朐',
+ '' => '柁',
+ '' => '柲',
+ '' => '柈',
+ '' => '枺',
+ '@' => '柜',
+ 'A' => '枻',
+ 'B' => '柸',
+ 'C' => '柘',
+ 'D' => '柀',
+ 'E' => '枷',
+ 'F' => '柅',
+ 'G' => '柫',
+ 'H' => '柤',
+ 'I' => '柟',
+ 'J' => '枵',
+ 'K' => '柍',
+ 'L' => '枳',
+ 'M' => '柷',
+ 'N' => '柶',
+ 'O' => '柮',
+ 'P' => '柣',
+ 'Q' => '柂',
+ 'R' => '枹',
+ 'S' => '柎',
+ 'T' => '柧',
+ 'U' => '柰',
+ 'V' => '枲',
+ 'W' => '柼',
+ 'X' => '柆',
+ 'Y' => '柭',
+ 'Z' => '柌',
+ '[' => '枮',
+ '\\' => '柦',
+ ']' => '柛',
+ '^' => '柺',
+ '_' => '柉',
+ '`' => '柊',
+ 'a' => '柃',
+ 'b' => '柪',
+ 'c' => '柋',
+ 'd' => '欨',
+ 'e' => '殂',
+ 'f' => '殄',
+ 'g' => '殶',
+ 'h' => '毖',
+ 'i' => '毘',
+ 'j' => '毠',
+ 'k' => '氠',
+ 'l' => '氡',
+ 'm' => '洨',
+ 'n' => '洴',
+ 'o' => '洭',
+ 'p' => '洟',
+ 'q' => '洼',
+ 'r' => '洿',
+ 's' => '洒',
+ 't' => '洊',
+ 'u' => '泚',
+ 'v' => '洳',
+ 'w' => '洄',
+ 'x' => '洙',
+ 'y' => '洺',
+ 'z' => '洚',
+ '{' => '洑',
+ '|' => '洀',
+ '}' => '洝',
+ '~' => '浂',
+ 'ϡ' => '洁',
+ 'Ϣ' => '洘',
+ 'ϣ' => '洷',
+ 'Ϥ' => '洃',
+ 'ϥ' => '洏',
+ 'Ϧ' => '浀',
+ 'ϧ' => '洇',
+ 'Ϩ' => '洠',
+ 'ϩ' => '洬',
+ 'Ϫ' => '洈',
+ 'ϫ' => '洢',
+ 'Ϭ' => '洉',
+ 'ϭ' => '洐',
+ 'Ϯ' => '炷',
+ 'ϯ' => '炟',
+ 'ϰ' => '炾',
+ 'ϱ' => '炱',
+ 'ϲ' => '炰',
+ 'ϳ' => '炡',
+ 'ϴ' => '炴',
+ 'ϵ' => '炵',
+ '϶' => '炩',
+ 'Ϸ' => '牁',
+ 'ϸ' => '牉',
+ 'Ϲ' => '牊',
+ 'Ϻ' => '牬',
+ 'ϻ' => '牰',
+ 'ϼ' => '牳',
+ 'Ͻ' => '牮',
+ 'Ͼ' => '狊',
+ 'Ͽ' => '狤',
+ '' => '狨',
+ '' => '狫',
+ '' => '狟',
+ '' => '狪',
+ '' => '狦',
+ '' => '狣',
+ '' => '玅',
+ '' => '珌',
+ '' => '珂',
+ '' => '珈',
+ '' => '珅',
+ '' => '玹',
+ '' => '玶',
+ '' => '玵',
+ '' => '玴',
+ '' => '珫',
+ '' => '玿',
+ '' => '珇',
+ '' => '玾',
+ '' => '珃',
+ '' => '珆',
+ '' => '玸',
+ '' => '珋',
+ '' => '瓬',
+ '' => '瓮',
+ '' => '甮',
+ '' => '畇',
+ '' => '畈',
+ '' => '疧',
+ '' => '疪',
+ '' => '癹',
+ '' => '盄',
+ '' => '眈',
+ '' => '眃',
+ '' => '眄',
+ '' => '眅',
+ '' => '眊',
+ '' => '盷',
+ '' => '盻',
+ '' => '盺',
+ '' => '矧',
+ '' => '矨',
+ '' => '砆',
+ '' => '砑',
+ '' => '砒',
+ '' => '砅',
+ '' => '砐',
+ '' => '砏',
+ '' => '砎',
+ '' => '砉',
+ '' => '砃',
+ '' => '砓',
+ '' => '祊',
+ '' => '祌',
+ '' => '祋',
+ '' => '祅',
+ '' => '祄',
+ '' => '秕',
+ '' => '种',
+ '' => '秏',
+ '' => '秖',
+ '' => '秎',
+ '' => '窀',
+ '@' => '穾',
+ 'A' => '竑',
+ 'B' => '笀',
+ 'C' => '笁',
+ 'D' => '籺',
+ 'E' => '籸',
+ 'F' => '籹',
+ 'G' => '籿',
+ 'H' => '粀',
+ 'I' => '粁',
+ 'J' => '紃',
+ 'K' => '紈',
+ 'L' => '紁',
+ 'M' => '罘',
+ 'N' => '羑',
+ 'O' => '羍',
+ 'P' => '羾',
+ 'Q' => '耇',
+ 'R' => '耎',
+ 'S' => '耏',
+ 'T' => '耔',
+ 'U' => '耷',
+ 'V' => '胘',
+ 'W' => '胇',
+ 'X' => '胠',
+ 'Y' => '胑',
+ 'Z' => '胈',
+ '[' => '胂',
+ '\\' => '胐',
+ ']' => '胅',
+ '^' => '胣',
+ '_' => '胙',
+ '`' => '胜',
+ 'a' => '胊',
+ 'b' => '胕',
+ 'c' => '胉',
+ 'd' => '胏',
+ 'e' => '胗',
+ 'f' => '胦',
+ 'g' => '胍',
+ 'h' => '臿',
+ 'i' => '舡',
+ 'j' => '芔',
+ 'k' => '苙',
+ 'l' => '苾',
+ 'm' => '苹',
+ 'n' => '茇',
+ 'o' => '苨',
+ 'p' => '茀',
+ 'q' => '苕',
+ 'r' => '茺',
+ 's' => '苫',
+ 't' => '苖',
+ 'u' => '苴',
+ 'v' => '苬',
+ 'w' => '苡',
+ 'x' => '苲',
+ 'y' => '苵',
+ 'z' => '茌',
+ '{' => '苻',
+ '|' => '苶',
+ '}' => '苰',
+ '~' => '苪',
+ 'С' => '苤',
+ 'Т' => '苠',
+ 'У' => '苺',
+ 'Ф' => '苳',
+ 'Х' => '苭',
+ 'Ц' => '虷',
+ 'Ч' => '虴',
+ 'Ш' => '虼',
+ 'Щ' => '虳',
+ 'Ъ' => '衁',
+ 'Ы' => '衎',
+ 'Ь' => '衧',
+ 'Э' => '衪',
+ 'Ю' => '衩',
+ 'Я' => '觓',
+ 'а' => '訄',
+ 'б' => '訇',
+ 'в' => '赲',
+ 'г' => '迣',
+ 'д' => '迡',
+ 'е' => '迮',
+ 'ж' => '迠',
+ 'з' => '郱',
+ 'и' => '邽',
+ 'й' => '邿',
+ 'к' => '郕',
+ 'л' => '郅',
+ 'м' => '邾',
+ 'н' => '郇',
+ 'о' => '郋',
+ 'п' => '郈',
+ '' => '釔',
+ '' => '釓',
+ '' => '陔',
+ '' => '陏',
+ '' => '陑',
+ '' => '陓',
+ '' => '陊',
+ '' => '陎',
+ '' => '倞',
+ '' => '倅',
+ '' => '倇',
+ '' => '倓',
+ '' => '倢',
+ '' => '倰',
+ '' => '倛',
+ '' => '俵',
+ '' => '俴',
+ '' => '倳',
+ '' => '倷',
+ '' => '倬',
+ '' => '俶',
+ '' => '俷',
+ '' => '倗',
+ '' => '倜',
+ '' => '倠',
+ '' => '倧',
+ '' => '倵',
+ '' => '倯',
+ '' => '倱',
+ '' => '倎',
+ '' => '党',
+ '' => '冔',
+ '' => '冓',
+ '' => '凊',
+ '' => '凄',
+ '' => '凅',
+ '' => '凈',
+ '' => '凎',
+ '' => '剡',
+ '' => '剚',
+ '' => '剒',
+ '' => '剞',
+ '' => '剟',
+ '' => '剕',
+ '' => '剢',
+ '' => '勍',
+ '' => '匎',
+ '' => '厞',
+ '' => '唦',
+ '' => '哢',
+ '' => '唗',
+ '' => '唒',
+ '' => '哧',
+ '' => '哳',
+ '' => '哤',
+ '' => '唚',
+ '' => '哿',
+ '' => '唄',
+ '' => '唈',
+ '' => '哫',
+ '' => '唑',
+ '' => '唅',
+ '' => '哱',
+ '@' => '唊',
+ 'A' => '哻',
+ 'B' => '哷',
+ 'C' => '哸',
+ 'D' => '哠',
+ 'E' => '唎',
+ 'F' => '唃',
+ 'G' => '唋',
+ 'H' => '圁',
+ 'I' => '圂',
+ 'J' => '埌',
+ 'K' => '堲',
+ 'L' => '埕',
+ 'M' => '埒',
+ 'N' => '垺',
+ 'O' => '埆',
+ 'P' => '垽',
+ 'Q' => '垼',
+ 'R' => '垸',
+ 'S' => '垶',
+ 'T' => '垿',
+ 'U' => '埇',
+ 'V' => '埐',
+ 'W' => '垹',
+ 'X' => '埁',
+ 'Y' => '夎',
+ 'Z' => '奊',
+ '[' => '娙',
+ '\\' => '娖',
+ ']' => '娭',
+ '^' => '娮',
+ '_' => '娕',
+ '`' => '娏',
+ 'a' => '娗',
+ 'b' => '娊',
+ 'c' => '娞',
+ 'd' => '娳',
+ 'e' => '孬',
+ 'f' => '宧',
+ 'g' => '宭',
+ 'h' => '宬',
+ 'i' => '尃',
+ 'j' => '屖',
+ 'k' => '屔',
+ 'l' => '峬',
+ 'm' => '峿',
+ 'n' => '峮',
+ 'o' => '峱',
+ 'p' => '峷',
+ 'q' => '崀',
+ 'r' => '峹',
+ 's' => '帩',
+ 't' => '帨',
+ 'u' => '庨',
+ 'v' => '庮',
+ 'w' => '庪',
+ 'x' => '庬',
+ 'y' => '弳',
+ 'z' => '弰',
+ '{' => '彧',
+ '|' => '恝',
+ '}' => '恚',
+ '~' => '恧',
+ 'ѡ' => '恁',
+ 'Ѣ' => '悢',
+ 'ѣ' => '悈',
+ 'Ѥ' => '悀',
+ 'ѥ' => '悒',
+ 'Ѧ' => '悁',
+ 'ѧ' => '悝',
+ 'Ѩ' => '悃',
+ 'ѩ' => '悕',
+ 'Ѫ' => '悛',
+ 'ѫ' => '悗',
+ 'Ѭ' => '悇',
+ 'ѭ' => '悜',
+ 'Ѯ' => '悎',
+ 'ѯ' => '戙',
+ 'Ѱ' => '扆',
+ 'ѱ' => '拲',
+ 'Ѳ' => '挐',
+ 'ѳ' => '捖',
+ 'Ѵ' => '挬',
+ 'ѵ' => '捄',
+ 'Ѷ' => '捅',
+ 'ѷ' => '挶',
+ 'Ѹ' => '捃',
+ 'ѹ' => '揤',
+ 'Ѻ' => '挹',
+ 'ѻ' => '捋',
+ 'Ѽ' => '捊',
+ 'ѽ' => '挼',
+ 'Ѿ' => '挩',
+ 'ѿ' => '捁',
+ '' => '挴',
+ '' => '捘',
+ '' => '捔',
+ '' => '捙',
+ '' => '挭',
+ '' => '捇',
+ '' => '挳',
+ '' => '捚',
+ '' => '捑',
+ '' => '挸',
+ '' => '捗',
+ '' => '捀',
+ '' => '捈',
+ '' => '敊',
+ '' => '敆',
+ '' => '旆',
+ '' => '旃',
+ '' => '旄',
+ '' => '旂',
+ '' => '晊',
+ '' => '晟',
+ '' => '晇',
+ '' => '晑',
+ '' => '朒',
+ '' => '朓',
+ '' => '栟',
+ '' => '栚',
+ '' => '桉',
+ '' => '栲',
+ '' => '栳',
+ '' => '栻',
+ '' => '桋',
+ '' => '桏',
+ '' => '栖',
+ '' => '栱',
+ '' => '栜',
+ '' => '栵',
+ '' => '栫',
+ '' => '栭',
+ '' => '栯',
+ '' => '桎',
+ '' => '桄',
+ '' => '栴',
+ '' => '栝',
+ '' => '栒',
+ '' => '栔',
+ '' => '栦',
+ '' => '栨',
+ '' => '栮',
+ '' => '桍',
+ '' => '栺',
+ '' => '栥',
+ '' => '栠',
+ '' => '欬',
+ '' => '欯',
+ '' => '欭',
+ '' => '欱',
+ '' => '欴',
+ '' => '歭',
+ '' => '肂',
+ '' => '殈',
+ '' => '毦',
+ '' => '毤',
+ '@' => '毨',
+ 'A' => '毣',
+ 'B' => '毢',
+ 'C' => '毧',
+ 'D' => '氥',
+ 'E' => '浺',
+ 'F' => '浣',
+ 'G' => '浤',
+ 'H' => '浶',
+ 'I' => '洍',
+ 'J' => '浡',
+ 'K' => '涒',
+ 'L' => '浘',
+ 'M' => '浢',
+ 'N' => '浭',
+ 'O' => '浯',
+ 'P' => '涑',
+ 'Q' => '涍',
+ 'R' => '淯',
+ 'S' => '浿',
+ 'T' => '涆',
+ 'U' => '浞',
+ 'V' => '浧',
+ 'W' => '浠',
+ 'X' => '涗',
+ 'Y' => '浰',
+ 'Z' => '浼',
+ '[' => '浟',
+ '\\' => '涂',
+ ']' => '涘',
+ '^' => '洯',
+ '_' => '浨',
+ '`' => '涋',
+ 'a' => '浾',
+ 'b' => '涀',
+ 'c' => '涄',
+ 'd' => '洖',
+ 'e' => '涃',
+ 'f' => '浻',
+ 'g' => '浽',
+ 'h' => '浵',
+ 'i' => '涐',
+ 'j' => '烜',
+ 'k' => '烓',
+ 'l' => '烑',
+ 'm' => '烝',
+ 'n' => '烋',
+ 'o' => '缹',
+ 'p' => '烢',
+ 'q' => '烗',
+ 'r' => '烒',
+ 's' => '烞',
+ 't' => '烠',
+ 'u' => '烔',
+ 'v' => '烍',
+ 'w' => '烅',
+ 'x' => '烆',
+ 'y' => '烇',
+ 'z' => '烚',
+ '{' => '烎',
+ '|' => '烡',
+ '}' => '牂',
+ '~' => '牸',
+ 'ҡ' => '牷',
+ 'Ң' => '牶',
+ 'ң' => '猀',
+ 'Ҥ' => '狺',
+ 'ҥ' => '狴',
+ 'Ҧ' => '狾',
+ 'ҧ' => '狶',
+ 'Ҩ' => '狳',
+ 'ҩ' => '狻',
+ 'Ҫ' => '猁',
+ 'ҫ' => '珓',
+ 'Ҭ' => '珙',
+ 'ҭ' => '珥',
+ 'Ү' => '珖',
+ 'ү' => '玼',
+ 'Ұ' => '珧',
+ 'ұ' => '珣',
+ 'Ҳ' => '珩',
+ 'ҳ' => '珜',
+ 'Ҵ' => '珒',
+ 'ҵ' => '珛',
+ 'Ҷ' => '珔',
+ 'ҷ' => '珝',
+ 'Ҹ' => '珚',
+ 'ҹ' => '珗',
+ 'Һ' => '珘',
+ 'һ' => '珨',
+ 'Ҽ' => '瓞',
+ 'ҽ' => '瓟',
+ 'Ҿ' => '瓴',
+ 'ҿ' => '瓵',
+ '' => '甡',
+ '' => '畛',
+ '' => '畟',
+ '' => '疰',
+ '' => '痁',
+ '' => '疻',
+ '' => '痄',
+ '' => '痀',
+ '' => '疿',
+ '' => '疶',
+ '' => '疺',
+ '' => '皊',
+ '' => '盉',
+ '' => '眝',
+ '' => '眛',
+ '' => '眐',
+ '' => '眓',
+ '' => '眒',
+ '' => '眣',
+ '' => '眑',
+ '' => '眕',
+ '' => '眙',
+ '' => '眚',
+ '' => '眢',
+ '' => '眧',
+ '' => '砣',
+ '' => '砬',
+ '' => '砢',
+ '' => '砵',
+ '' => '砯',
+ '' => '砨',
+ '' => '砮',
+ '' => '砫',
+ '' => '砡',
+ '' => '砩',
+ '' => '砳',
+ '' => '砪',
+ '' => '砱',
+ '' => '祔',
+ '' => '祛',
+ '' => '祏',
+ '' => '祜',
+ '' => '祓',
+ '' => '祒',
+ '' => '祑',
+ '' => '秫',
+ '' => '秬',
+ '' => '秠',
+ '' => '秮',
+ '' => '秭',
+ '' => '秪',
+ '' => '秜',
+ '' => '秞',
+ '' => '秝',
+ '' => '窆',
+ '' => '窉',
+ '' => '窅',
+ '' => '窋',
+ '' => '窌',
+ '' => '窊',
+ '' => '窇',
+ '' => '竘',
+ '' => '笐',
+ '@' => '笄',
+ 'A' => '笓',
+ 'B' => '笅',
+ 'C' => '笏',
+ 'D' => '笈',
+ 'E' => '笊',
+ 'F' => '笎',
+ 'G' => '笉',
+ 'H' => '笒',
+ 'I' => '粄',
+ 'J' => '粑',
+ 'K' => '粊',
+ 'L' => '粌',
+ 'M' => '粈',
+ 'N' => '粍',
+ 'O' => '粅',
+ 'P' => '紞',
+ 'Q' => '紝',
+ 'R' => '紑',
+ 'S' => '紎',
+ 'T' => '紘',
+ 'U' => '紖',
+ 'V' => '紓',
+ 'W' => '紟',
+ 'X' => '紒',
+ 'Y' => '紏',
+ 'Z' => '紌',
+ '[' => '罜',
+ '\\' => '罡',
+ ']' => '罞',
+ '^' => '罠',
+ '_' => '罝',
+ '`' => '罛',
+ 'a' => '羖',
+ 'b' => '羒',
+ 'c' => '翃',
+ 'd' => '翂',
+ 'e' => '翀',
+ 'f' => '耖',
+ 'g' => '耾',
+ 'h' => '耹',
+ 'i' => '胺',
+ 'j' => '胲',
+ 'k' => '胹',
+ 'l' => '胵',
+ 'm' => '脁',
+ 'n' => '胻',
+ 'o' => '脀',
+ 'p' => '舁',
+ 'q' => '舯',
+ 'r' => '舥',
+ 's' => '茳',
+ 't' => '茭',
+ 'u' => '荄',
+ 'v' => '茙',
+ 'w' => '荑',
+ 'x' => '茥',
+ 'y' => '荖',
+ 'z' => '茿',
+ '{' => '荁',
+ '|' => '茦',
+ '}' => '茜',
+ '~' => '茢',
+ 'ӡ' => '荂',
+ 'Ӣ' => '荎',
+ 'ӣ' => '茛',
+ 'Ӥ' => '茪',
+ 'ӥ' => '茈',
+ 'Ӧ' => '茼',
+ 'ӧ' => '荍',
+ 'Ө' => '茖',
+ 'ө' => '茤',
+ 'Ӫ' => '茠',
+ 'ӫ' => '茷',
+ 'Ӭ' => '茯',
+ 'ӭ' => '茩',
+ 'Ӯ' => '荇',
+ 'ӯ' => '荅',
+ 'Ӱ' => '荌',
+ 'ӱ' => '荓',
+ 'Ӳ' => '茞',
+ 'ӳ' => '茬',
+ 'Ӵ' => '荋',
+ 'ӵ' => '茧',
+ 'Ӷ' => '荈',
+ 'ӷ' => '虓',
+ 'Ӹ' => '虒',
+ 'ӹ' => '蚢',
+ 'Ӻ' => '蚨',
+ 'ӻ' => '蚖',
+ 'Ӽ' => '蚍',
+ 'ӽ' => '蚑',
+ 'Ӿ' => '蚞',
+ 'ӿ' => '蚇',
+ '' => '蚗',
+ '' => '蚆',
+ '' => '蚋',
+ '' => '蚚',
+ '' => '蚅',
+ '' => '蚥',
+ '' => '蚙',
+ '' => '蚡',
+ '' => '蚧',
+ '' => '蚕',
+ '' => '蚘',
+ '' => '蚎',
+ '' => '蚝',
+ '' => '蚐',
+ '' => '蚔',
+ '' => '衃',
+ '' => '衄',
+ '' => '衭',
+ '' => '衵',
+ '' => '衶',
+ '' => '衲',
+ '' => '袀',
+ '' => '衱',
+ '' => '衿',
+ '' => '衯',
+ '' => '袃',
+ '' => '衾',
+ '' => '衴',
+ '' => '衼',
+ '' => '訒',
+ '' => '豇',
+ '' => '豗',
+ '' => '豻',
+ '' => '貤',
+ '' => '貣',
+ '' => '赶',
+ '' => '赸',
+ '' => '趵',
+ '' => '趷',
+ '' => '趶',
+ '' => '軑',
+ '' => '軓',
+ '' => '迾',
+ '' => '迵',
+ '' => '适',
+ '' => '迿',
+ '' => '迻',
+ '' => '逄',
+ '' => '迼',
+ '' => '迶',
+ '' => '郖',
+ '' => '郠',
+ '' => '郙',
+ '' => '郚',
+ '' => '郣',
+ '' => '郟',
+ '' => '郥',
+ '' => '郘',
+ '' => '郛',
+ '' => '郗',
+ '' => '郜',
+ '' => '郤',
+ '' => '酐',
+ '@' => '酎',
+ 'A' => '酏',
+ 'B' => '釕',
+ 'C' => '釢',
+ 'D' => '釚',
+ 'E' => '陜',
+ 'F' => '陟',
+ 'G' => '隼',
+ 'H' => '飣',
+ 'I' => '髟',
+ 'J' => '鬯',
+ 'K' => '乿',
+ 'L' => '偰',
+ 'M' => '偪',
+ 'N' => '偡',
+ 'O' => '偞',
+ 'P' => '偠',
+ 'Q' => '偓',
+ 'R' => '偋',
+ 'S' => '偝',
+ 'T' => '偲',
+ 'U' => '偈',
+ 'V' => '偍',
+ 'W' => '偁',
+ 'X' => '偛',
+ 'Y' => '偊',
+ 'Z' => '偢',
+ '[' => '倕',
+ '\\' => '偅',
+ ']' => '偟',
+ '^' => '偩',
+ '_' => '偫',
+ '`' => '偣',
+ 'a' => '偤',
+ 'b' => '偆',
+ 'c' => '偀',
+ 'd' => '偮',
+ 'e' => '偳',
+ 'f' => '偗',
+ 'g' => '偑',
+ 'h' => '凐',
+ 'i' => '剫',
+ 'j' => '剭',
+ 'k' => '剬',
+ 'l' => '剮',
+ 'm' => '勖',
+ 'n' => '勓',
+ 'o' => '匭',
+ 'p' => '厜',
+ 'q' => '啵',
+ 'r' => '啶',
+ 's' => '唼',
+ 't' => '啍',
+ 'u' => '啐',
+ 'v' => '唴',
+ 'w' => '唪',
+ 'x' => '啑',
+ 'y' => '啢',
+ 'z' => '唶',
+ '{' => '唵',
+ '|' => '唰',
+ '}' => '啒',
+ '~' => '啅',
+ 'ԡ' => '唌',
+ 'Ԣ' => '唲',
+ 'ԣ' => '啥',
+ 'Ԥ' => '啎',
+ 'ԥ' => '唹',
+ 'Ԧ' => '啈',
+ 'ԧ' => '唭',
+ 'Ԩ' => '唻',
+ 'ԩ' => '啀',
+ 'Ԫ' => '啋',
+ 'ԫ' => '圊',
+ 'Ԭ' => '圇',
+ 'ԭ' => '埻',
+ 'Ԯ' => '堔',
+ 'ԯ' => '埢',
+ '' => '埶',
+ 'Ա' => '埜',
+ 'Բ' => '埴',
+ 'Գ' => '堀',
+ 'Դ' => '埭',
+ 'Ե' => '埽',
+ 'Զ' => '堈',
+ 'Է' => '埸',
+ 'Ը' => '堋',
+ 'Թ' => '埳',
+ 'Ժ' => '埏',
+ 'Ի' => '堇',
+ 'Լ' => '埮',
+ 'Խ' => '埣',
+ 'Ծ' => '埲',
+ 'Կ' => '埥',
+ '' => '埬',
+ '' => '埡',
+ '' => '堎',
+ '' => '埼',
+ '' => '堐',
+ '' => '埧',
+ '' => '堁',
+ '' => '堌',
+ '' => '埱',
+ '' => '埩',
+ '' => '埰',
+ '' => '堍',
+ '' => '堄',
+ '' => '奜',
+ '' => '婠',
+ '' => '婘',
+ '' => '婕',
+ '' => '婧',
+ '' => '婞',
+ '' => '娸',
+ '' => '娵',
+ '' => '婭',
+ '' => '婐',
+ '' => '婟',
+ '' => '婥',
+ '' => '婬',
+ '' => '婓',
+ '' => '婤',
+ '' => '婗',
+ '' => '婃',
+ '' => '婝',
+ '' => '婒',
+ '' => '婄',
+ '' => '婛',
+ '' => '婈',
+ '' => '媎',
+ '' => '娾',
+ '' => '婍',
+ '' => '娹',
+ '' => '婌',
+ '' => '婰',
+ '' => '婩',
+ '' => '婇',
+ '' => '婑',
+ '' => '婖',
+ '' => '婂',
+ '' => '婜',
+ '' => '孲',
+ '' => '孮',
+ '' => '寁',
+ '' => '寀',
+ '' => '屙',
+ '' => '崞',
+ '' => '崋',
+ '' => '崝',
+ '' => '崚',
+ '' => '崠',
+ '' => '崌',
+ '' => '崨',
+ '' => '崍',
+ '' => '崦',
+ '' => '崥',
+ '' => '崏',
+ '@' => '崰',
+ 'A' => '崒',
+ 'B' => '崣',
+ 'C' => '崟',
+ 'D' => '崮',
+ 'E' => '帾',
+ 'F' => '帴',
+ 'G' => '庱',
+ 'H' => '庴',
+ 'I' => '庹',
+ 'J' => '庲',
+ 'K' => '庳',
+ 'L' => '弶',
+ 'M' => '弸',
+ 'N' => '徛',
+ 'O' => '徖',
+ 'P' => '徟',
+ 'Q' => '悊',
+ 'R' => '悐',
+ 'S' => '悆',
+ 'T' => '悾',
+ 'U' => '悰',
+ 'V' => '悺',
+ 'W' => '惓',
+ 'X' => '惔',
+ 'Y' => '惏',
+ 'Z' => '惤',
+ '[' => '惙',
+ '\\' => '惝',
+ ']' => '惈',
+ '^' => '悱',
+ '_' => '惛',
+ '`' => '悷',
+ 'a' => '惊',
+ 'b' => '悿',
+ 'c' => '惃',
+ 'd' => '惍',
+ 'e' => '惀',
+ 'f' => '挲',
+ 'g' => '捥',
+ 'h' => '掊',
+ 'i' => '掂',
+ 'j' => '捽',
+ 'k' => '掽',
+ 'l' => '掞',
+ 'm' => '掭',
+ 'n' => '掝',
+ 'o' => '掗',
+ 'p' => '掫',
+ 'q' => '掎',
+ 'r' => '捯',
+ 's' => '掇',
+ 't' => '掐',
+ 'u' => '据',
+ 'v' => '掯',
+ 'w' => '捵',
+ 'x' => '掜',
+ 'y' => '捭',
+ 'z' => '掮',
+ '{' => '捼',
+ '|' => '掤',
+ '}' => '挻',
+ '~' => '掟',
+ 'ա' => '捸',
+ 'բ' => '掅',
+ 'գ' => '掁',
+ 'դ' => '掑',
+ 'ե' => '掍',
+ 'զ' => '捰',
+ 'է' => '敓',
+ 'ը' => '旍',
+ 'թ' => '晥',
+ 'ժ' => '晡',
+ 'ի' => '晛',
+ 'լ' => '晙',
+ 'խ' => '晜',
+ 'ծ' => '晢',
+ 'կ' => '朘',
+ 'հ' => '桹',
+ 'ձ' => '梇',
+ 'ղ' => '梐',
+ 'ճ' => '梜',
+ 'մ' => '桭',
+ 'յ' => '桮',
+ 'ն' => '梮',
+ 'շ' => '梫',
+ 'ո' => '楖',
+ 'չ' => '桯',
+ 'պ' => '梣',
+ 'ջ' => '梬',
+ 'ռ' => '梩',
+ 'ս' => '桵',
+ 'վ' => '桴',
+ 'տ' => '梲',
+ '' => '梏',
+ '' => '桷',
+ '' => '梒',
+ '' => '桼',
+ '' => '桫',
+ '' => '桲',
+ '' => '梪',
+ '' => '梀',
+ '' => '桱',
+ '' => '桾',
+ '' => '梛',
+ '' => '梖',
+ '' => '梋',
+ '' => '梠',
+ '' => '梉',
+ '' => '梤',
+ '' => '桸',
+ '' => '桻',
+ '' => '梑',
+ '' => '梌',
+ '' => '梊',
+ '' => '桽',
+ '' => '欶',
+ '' => '欳',
+ '' => '欷',
+ '' => '欸',
+ '' => '殑',
+ '' => '殏',
+ '' => '殍',
+ '' => '殎',
+ '' => '殌',
+ '' => '氪',
+ '' => '淀',
+ '' => '涫',
+ '' => '涴',
+ '' => '涳',
+ '' => '湴',
+ '' => '涬',
+ '' => '淩',
+ '' => '淢',
+ '' => '涷',
+ '' => '淶',
+ '' => '淔',
+ '' => '渀',
+ '' => '淈',
+ '' => '淠',
+ '' => '淟',
+ '' => '淖',
+ '' => '涾',
+ '' => '淥',
+ '' => '淜',
+ '' => '淝',
+ '' => '淛',
+ '' => '淴',
+ '' => '淊',
+ '' => '涽',
+ '' => '淭',
+ '' => '淰',
+ '' => '涺',
+ '' => '淕',
+ '' => '淂',
+ '' => '淏',
+ '' => '淉',
+ '@' => '淐',
+ 'A' => '淲',
+ 'B' => '淓',
+ 'C' => '淽',
+ 'D' => '淗',
+ 'E' => '淍',
+ 'F' => '淣',
+ 'G' => '涻',
+ 'H' => '烺',
+ 'I' => '焍',
+ 'J' => '烷',
+ 'K' => '焗',
+ 'L' => '烴',
+ 'M' => '焌',
+ 'N' => '烰',
+ 'O' => '焄',
+ 'P' => '烳',
+ 'Q' => '焐',
+ 'R' => '烼',
+ 'S' => '烿',
+ 'T' => '焆',
+ 'U' => '焓',
+ 'V' => '焀',
+ 'W' => '烸',
+ 'X' => '烶',
+ 'Y' => '焋',
+ 'Z' => '焂',
+ '[' => '焎',
+ '\\' => '牾',
+ ']' => '牻',
+ '^' => '牼',
+ '_' => '牿',
+ '`' => '猝',
+ 'a' => '猗',
+ 'b' => '猇',
+ 'c' => '猑',
+ 'd' => '猘',
+ 'e' => '猊',
+ 'f' => '猈',
+ 'g' => '狿',
+ 'h' => '猏',
+ 'i' => '猞',
+ 'j' => '玈',
+ 'k' => '珶',
+ 'l' => '珸',
+ 'm' => '珵',
+ 'n' => '琄',
+ 'o' => '琁',
+ 'p' => '珽',
+ 'q' => '琇',
+ 'r' => '琀',
+ 's' => '珺',
+ 't' => '珼',
+ 'u' => '珿',
+ 'v' => '琌',
+ 'w' => '琋',
+ 'x' => '珴',
+ 'y' => '琈',
+ 'z' => '畤',
+ '{' => '畣',
+ '|' => '痎',
+ '}' => '痒',
+ '~' => '痏',
+ '֡' => '痋',
+ '֢' => '痌',
+ '֣' => '痑',
+ '֤' => '痐',
+ '֥' => '皏',
+ '֦' => '皉',
+ '֧' => '盓',
+ '֨' => '眹',
+ '֩' => '眯',
+ '֪' => '眭',
+ '֫' => '眱',
+ '֬' => '眲',
+ '֭' => '眴',
+ '֮' => '眳',
+ '֯' => '眽',
+ 'ְ' => '眥',
+ 'ֱ' => '眻',
+ 'ֲ' => '眵',
+ 'ֳ' => '硈',
+ 'ִ' => '硒',
+ 'ֵ' => '硉',
+ 'ֶ' => '硍',
+ 'ַ' => '硊',
+ 'ָ' => '硌',
+ 'ֹ' => '砦',
+ 'ֺ' => '硅',
+ 'ֻ' => '硐',
+ 'ּ' => '祤',
+ 'ֽ' => '祧',
+ '־' => '祩',
+ 'ֿ' => '祪',
+ '' => '祣',
+ '' => '祫',
+ '' => '祡',
+ '' => '离',
+ '' => '秺',
+ '' => '秸',
+ '' => '秶',
+ '' => '秷',
+ '' => '窏',
+ '' => '窔',
+ '' => '窐',
+ '' => '笵',
+ '' => '筇',
+ '' => '笴',
+ '' => '笥',
+ '' => '笰',
+ '' => '笢',
+ '' => '笤',
+ '' => '笳',
+ '' => '笘',
+ '' => '笪',
+ '' => '笝',
+ '' => '笱',
+ '' => '笫',
+ '' => '笭',
+ '' => '笯',
+ '' => '笲',
+ '' => '笸',
+ '' => '笚',
+ '' => '笣',
+ '' => '粔',
+ '' => '粘',
+ '' => '粖',
+ '' => '粣',
+ '' => '紵',
+ '' => '紽',
+ '' => '紸',
+ '' => '紶',
+ '' => '紺',
+ '' => '絅',
+ '' => '紬',
+ '' => '紩',
+ '' => '絁',
+ '' => '絇',
+ '' => '紾',
+ '' => '紿',
+ '' => '絊',
+ '' => '紻',
+ '' => '紨',
+ '' => '罣',
+ '' => '羕',
+ '' => '羜',
+ '' => '羝',
+ '' => '羛',
+ '' => '翊',
+ '' => '翋',
+ '' => '翍',
+ '' => '翐',
+ '' => '翑',
+ '' => '翇',
+ '' => '翏',
+ '' => '翉',
+ '' => '耟',
+ '@' => '耞',
+ 'A' => '耛',
+ 'B' => '聇',
+ 'C' => '聃',
+ 'D' => '聈',
+ 'E' => '脘',
+ 'F' => '脥',
+ 'G' => '脙',
+ 'H' => '脛',
+ 'I' => '脭',
+ 'J' => '脟',
+ 'K' => '脬',
+ 'L' => '脞',
+ 'M' => '脡',
+ 'N' => '脕',
+ 'O' => '脧',
+ 'P' => '脝',
+ 'Q' => '脢',
+ 'R' => '舑',
+ 'S' => '舸',
+ 'T' => '舳',
+ 'U' => '舺',
+ 'V' => '舴',
+ 'W' => '舲',
+ 'X' => '艴',
+ 'Y' => '莐',
+ 'Z' => '莣',
+ '[' => '莨',
+ '\\' => '莍',
+ ']' => '荺',
+ '^' => '荳',
+ '_' => '莤',
+ '`' => '荴',
+ 'a' => '莏',
+ 'b' => '莁',
+ 'c' => '莕',
+ 'd' => '莙',
+ 'e' => '荵',
+ 'f' => '莔',
+ 'g' => '莩',
+ 'h' => '荽',
+ 'i' => '莃',
+ 'j' => '莌',
+ 'k' => '莝',
+ 'l' => '莛',
+ 'm' => '莪',
+ 'n' => '莋',
+ 'o' => '荾',
+ 'p' => '莥',
+ 'q' => '莯',
+ 'r' => '莈',
+ 's' => '莗',
+ 't' => '莰',
+ 'u' => '荿',
+ 'v' => '莦',
+ 'w' => '莇',
+ 'x' => '莮',
+ 'y' => '荶',
+ 'z' => '莚',
+ '{' => '虙',
+ '|' => '虖',
+ '}' => '蚿',
+ '~' => '蚷',
+ 'ס' => '蛂',
+ 'ע' => '蛁',
+ 'ף' => '蛅',
+ 'פ' => '蚺',
+ 'ץ' => '蚰',
+ 'צ' => '蛈',
+ 'ק' => '蚹',
+ 'ר' => '蚳',
+ 'ש' => '蚸',
+ 'ת' => '蛌',
+ '' => '蚴',
+ '' => '蚻',
+ '' => '蚼',
+ '' => '蛃',
+ 'ׯ' => '蚽',
+ 'װ' => '蚾',
+ 'ױ' => '衒',
+ 'ײ' => '袉',
+ '׳' => '袕',
+ '״' => '袨',
+ '' => '袢',
+ '' => '袪',
+ '' => '袚',
+ '' => '袑',
+ '' => '袡',
+ '' => '袟',
+ '' => '袘',
+ '' => '袧',
+ '' => '袙',
+ '' => '袛',
+ '' => '袗',
+ '' => '袤',
+ '' => '袬',
+ '' => '袌',
+ '' => '袓',
+ '' => '袎',
+ '' => '覂',
+ '' => '觖',
+ '' => '觙',
+ '' => '觕',
+ '' => '訰',
+ '' => '訧',
+ '' => '訬',
+ '' => '訞',
+ '' => '谹',
+ '' => '谻',
+ '' => '豜',
+ '' => '豝',
+ '' => '豽',
+ '' => '貥',
+ '' => '赽',
+ '' => '赻',
+ '' => '赹',
+ '' => '趼',
+ '' => '跂',
+ '' => '趹',
+ '' => '趿',
+ '' => '跁',
+ '' => '軘',
+ '' => '軞',
+ '' => '軝',
+ '' => '軜',
+ '' => '軗',
+ '' => '軠',
+ '' => '軡',
+ '' => '逤',
+ '' => '逋',
+ '' => '逑',
+ '' => '逜',
+ '' => '逌',
+ '' => '逡',
+ '' => '郯',
+ '' => '郪',
+ '' => '郰',
+ '' => '郴',
+ '' => '郲',
+ '' => '郳',
+ '' => '郔',
+ '' => '郫',
+ '' => '郬',
+ '' => '郩',
+ '' => '酖',
+ '' => '酘',
+ '' => '酚',
+ '' => '酓',
+ '' => '酕',
+ '' => '釬',
+ '' => '釴',
+ '' => '釱',
+ '' => '釳',
+ '' => '釸',
+ '' => '釤',
+ '' => '釹',
+ '' => '釪',
+ '@' => '釫',
+ 'A' => '釷',
+ 'B' => '釨',
+ 'C' => '釮',
+ 'D' => '镺',
+ 'E' => '閆',
+ 'F' => '閈',
+ 'G' => '陼',
+ 'H' => '陭',
+ 'I' => '陫',
+ 'J' => '陱',
+ 'K' => '陯',
+ 'L' => '隿',
+ 'M' => '靪',
+ 'N' => '頄',
+ 'O' => '飥',
+ 'P' => '馗',
+ 'Q' => '傛',
+ 'R' => '傕',
+ 'S' => '傔',
+ 'T' => '傞',
+ 'U' => '傋',
+ 'V' => '傣',
+ 'W' => '傃',
+ 'X' => '傌',
+ 'Y' => '傎',
+ 'Z' => '傝',
+ '[' => '偨',
+ '\\' => '傜',
+ ']' => '傒',
+ '^' => '傂',
+ '_' => '傇',
+ '`' => '兟',
+ 'a' => '凔',
+ 'b' => '匒',
+ 'c' => '匑',
+ 'd' => '厤',
+ 'e' => '厧',
+ 'f' => '喑',
+ 'g' => '喨',
+ 'h' => '喥',
+ 'i' => '喭',
+ 'j' => '啷',
+ 'k' => '噅',
+ 'l' => '喢',
+ 'm' => '喓',
+ 'n' => '喈',
+ 'o' => '喏',
+ 'p' => '喵',
+ 'q' => '喁',
+ 'r' => '喣',
+ 's' => '喒',
+ 't' => '喤',
+ 'u' => '啽',
+ 'v' => '喌',
+ 'w' => '喦',
+ 'x' => '啿',
+ 'y' => '喕',
+ 'z' => '喡',
+ '{' => '喎',
+ '|' => '圌',
+ '}' => '堩',
+ '~' => '堷',
+ 'ء' => '堙',
+ 'آ' => '堞',
+ 'أ' => '堧',
+ 'ؤ' => '堣',
+ 'إ' => '堨',
+ 'ئ' => '埵',
+ 'ا' => '塈',
+ 'ب' => '堥',
+ 'ة' => '堜',
+ 'ت' => '堛',
+ 'ث' => '堳',
+ 'ج' => '堿',
+ 'ح' => '堶',
+ 'خ' => '堮',
+ 'د' => '堹',
+ 'ذ' => '堸',
+ 'ر' => '堭',
+ 'ز' => '堬',
+ 'س' => '堻',
+ 'ش' => '奡',
+ 'ص' => '媯',
+ 'ض' => '媔',
+ 'ط' => '媟',
+ 'ظ' => '婺',
+ 'ع' => '媢',
+ 'غ' => '媞',
+ 'ػ' => '婸',
+ 'ؼ' => '媦',
+ 'ؽ' => '婼',
+ 'ؾ' => '媥',
+ 'ؿ' => '媬',
+ '' => '媕',
+ '' => '媮',
+ '' => '娷',
+ '' => '媄',
+ '' => '媊',
+ '' => '媗',
+ '' => '媃',
+ '' => '媋',
+ '' => '媩',
+ '' => '婻',
+ '' => '婽',
+ '' => '媌',
+ '' => '媜',
+ '' => '媏',
+ '' => '媓',
+ '' => '媝',
+ '' => '寪',
+ '' => '寍',
+ '' => '寋',
+ '' => '寔',
+ '' => '寑',
+ '' => '寊',
+ '' => '寎',
+ '' => '尌',
+ '' => '尰',
+ '' => '崷',
+ '' => '嵃',
+ '' => '嵫',
+ '' => '嵁',
+ '' => '嵋',
+ '' => '崿',
+ '' => '崵',
+ '' => '嵑',
+ '' => '嵎',
+ '' => '嵕',
+ '' => '崳',
+ '' => '崺',
+ '' => '嵒',
+ '' => '崽',
+ '' => '崱',
+ '' => '嵙',
+ '' => '嵂',
+ '' => '崹',
+ '' => '嵉',
+ '' => '崸',
+ '' => '崼',
+ '' => '崲',
+ '' => '崶',
+ '' => '嵀',
+ '' => '嵅',
+ '' => '幄',
+ '' => '幁',
+ '' => '彘',
+ '' => '徦',
+ '' => '徥',
+ '' => '徫',
+ '' => '惉',
+ '' => '悹',
+ '' => '惌',
+ '' => '惢',
+ '' => '惎',
+ '' => '惄',
+ '' => '愔',
+ '@' => '惲',
+ 'A' => '愊',
+ 'B' => '愖',
+ 'C' => '愅',
+ 'D' => '惵',
+ 'E' => '愓',
+ 'F' => '惸',
+ 'G' => '惼',
+ 'H' => '惾',
+ 'I' => '惁',
+ 'J' => '愃',
+ 'K' => '愘',
+ 'L' => '愝',
+ 'M' => '愐',
+ 'N' => '惿',
+ 'O' => '愄',
+ 'P' => '愋',
+ 'Q' => '扊',
+ 'R' => '掔',
+ 'S' => '掱',
+ 'T' => '掰',
+ 'U' => '揎',
+ 'V' => '揥',
+ 'W' => '揨',
+ 'X' => '揯',
+ 'Y' => '揃',
+ 'Z' => '撝',
+ '[' => '揳',
+ '\\' => '揊',
+ ']' => '揠',
+ '^' => '揶',
+ '_' => '揕',
+ '`' => '揲',
+ 'a' => '揵',
+ 'b' => '摡',
+ 'c' => '揟',
+ 'd' => '掾',
+ 'e' => '揝',
+ 'f' => '揜',
+ 'g' => '揄',
+ 'h' => '揘',
+ 'i' => '揓',
+ 'j' => '揂',
+ 'k' => '揇',
+ 'l' => '揌',
+ 'm' => '揋',
+ 'n' => '揈',
+ 'o' => '揰',
+ 'p' => '揗',
+ 'q' => '揙',
+ 'r' => '攲',
+ 's' => '敧',
+ 't' => '敪',
+ 'u' => '敤',
+ 'v' => '敜',
+ 'w' => '敨',
+ 'x' => '敥',
+ 'y' => '斌',
+ 'z' => '斝',
+ '{' => '斞',
+ '|' => '斮',
+ '}' => '旐',
+ '~' => '旒',
+ '١' => '晼',
+ '٢' => '晬',
+ '٣' => '晻',
+ '٤' => '暀',
+ '٥' => '晱',
+ '٦' => '晹',
+ '٧' => '晪',
+ '٨' => '晲',
+ '٩' => '朁',
+ '٪' => '椌',
+ '٫' => '棓',
+ '٬' => '椄',
+ '٭' => '棜',
+ 'ٮ' => '椪',
+ 'ٯ' => '棬',
+ 'ٰ' => '棪',
+ 'ٱ' => '棱',
+ 'ٲ' => '椏',
+ 'ٳ' => '棖',
+ 'ٴ' => '棷',
+ 'ٵ' => '棫',
+ 'ٶ' => '棤',
+ 'ٷ' => '棶',
+ 'ٸ' => '椓',
+ 'ٹ' => '椐',
+ 'ٺ' => '棳',
+ 'ٻ' => '棡',
+ 'ټ' => '椇',
+ 'ٽ' => '棌',
+ 'پ' => '椈',
+ 'ٿ' => '楰',
+ '' => '梴',
+ '' => '椑',
+ '' => '棯',
+ '' => '棆',
+ '' => '椔',
+ '' => '棸',
+ '' => '棐',
+ '' => '棽',
+ '' => '棼',
+ '' => '棨',
+ '' => '椋',
+ '' => '椊',
+ '' => '椗',
+ '' => '棎',
+ '' => '棈',
+ '' => '棝',
+ '' => '棞',
+ '' => '棦',
+ '' => '棴',
+ '' => '棑',
+ '' => '椆',
+ '' => '棔',
+ '' => '棩',
+ '' => '椕',
+ '' => '椥',
+ '' => '棇',
+ '' => '欹',
+ '' => '欻',
+ '' => '欿',
+ '' => '欼',
+ '' => '殔',
+ '' => '殗',
+ '' => '殙',
+ '' => '殕',
+ '' => '殽',
+ '' => '毰',
+ '' => '毲',
+ '' => '毳',
+ '' => '氰',
+ '' => '淼',
+ '' => '湆',
+ '' => '湇',
+ '' => '渟',
+ '' => '湉',
+ '' => '溈',
+ '' => '渼',
+ '' => '渽',
+ '' => '湅',
+ '' => '湢',
+ '' => '渫',
+ '' => '渿',
+ '' => '湁',
+ '' => '湝',
+ '' => '湳',
+ '' => '渜',
+ '' => '渳',
+ '' => '湋',
+ '' => '湀',
+ '' => '湑',
+ '' => '渻',
+ '' => '渃',
+ '' => '渮',
+ '' => '湞',
+ '@' => '湨',
+ 'A' => '湜',
+ 'B' => '湡',
+ 'C' => '渱',
+ 'D' => '渨',
+ 'E' => '湠',
+ 'F' => '湱',
+ 'G' => '湫',
+ 'H' => '渹',
+ 'I' => '渢',
+ 'J' => '渰',
+ 'K' => '湓',
+ 'L' => '湥',
+ 'M' => '渧',
+ 'N' => '湸',
+ 'O' => '湤',
+ 'P' => '湷',
+ 'Q' => '湕',
+ 'R' => '湹',
+ 'S' => '湒',
+ 'T' => '湦',
+ 'U' => '渵',
+ 'V' => '渶',
+ 'W' => '湚',
+ 'X' => '焠',
+ 'Y' => '焞',
+ 'Z' => '焯',
+ '[' => '烻',
+ '\\' => '焮',
+ ']' => '焱',
+ '^' => '焣',
+ '_' => '焥',
+ '`' => '焢',
+ 'a' => '焲',
+ 'b' => '焟',
+ 'c' => '焨',
+ 'd' => '焺',
+ 'e' => '焛',
+ 'f' => '牋',
+ 'g' => '牚',
+ 'h' => '犈',
+ 'i' => '犉',
+ 'j' => '犆',
+ 'k' => '犅',
+ 'l' => '犋',
+ 'm' => '猒',
+ 'n' => '猋',
+ 'o' => '猰',
+ 'p' => '猢',
+ 'q' => '猱',
+ 'r' => '猳',
+ 's' => '猧',
+ 't' => '猲',
+ 'u' => '猭',
+ 'v' => '猦',
+ 'w' => '猣',
+ 'x' => '猵',
+ 'y' => '猌',
+ 'z' => '琮',
+ '{' => '琬',
+ '|' => '琰',
+ '}' => '琫',
+ '~' => '琖',
+ 'ڡ' => '琚',
+ 'ڢ' => '琡',
+ 'ڣ' => '琭',
+ 'ڤ' => '琱',
+ 'ڥ' => '琤',
+ 'ڦ' => '琣',
+ 'ڧ' => '琝',
+ 'ڨ' => '琩',
+ 'ک' => '琠',
+ 'ڪ' => '琲',
+ 'ګ' => '瓻',
+ 'ڬ' => '甯',
+ 'ڭ' => '畯',
+ 'ڮ' => '畬',
+ 'گ' => '痧',
+ 'ڰ' => '痚',
+ 'ڱ' => '痡',
+ 'ڲ' => '痦',
+ 'ڳ' => '痝',
+ 'ڴ' => '痟',
+ 'ڵ' => '痤',
+ 'ڶ' => '痗',
+ 'ڷ' => '皕',
+ 'ڸ' => '皒',
+ 'ڹ' => '盚',
+ 'ں' => '睆',
+ 'ڻ' => '睇',
+ 'ڼ' => '睄',
+ 'ڽ' => '睍',
+ 'ھ' => '睅',
+ 'ڿ' => '睊',
+ '' => '睎',
+ '' => '睋',
+ '' => '睌',
+ '' => '矞',
+ '' => '矬',
+ '' => '硠',
+ '' => '硤',
+ '' => '硥',
+ '' => '硜',
+ '' => '硭',
+ '' => '硱',
+ '' => '硪',
+ '' => '确',
+ '' => '硰',
+ '' => '硩',
+ '' => '硨',
+ '' => '硞',
+ '' => '硢',
+ '' => '祴',
+ '' => '祳',
+ '' => '祲',
+ '' => '祰',
+ '' => '稂',
+ '' => '稊',
+ '' => '稃',
+ '' => '稌',
+ '' => '稄',
+ '' => '窙',
+ '' => '竦',
+ '' => '竤',
+ '' => '筊',
+ '' => '笻',
+ '' => '筄',
+ '' => '筈',
+ '' => '筌',
+ '' => '筎',
+ '' => '筀',
+ '' => '筘',
+ '' => '筅',
+ '' => '粢',
+ '' => '粞',
+ '' => '粨',
+ '' => '粡',
+ '' => '絘',
+ '' => '絯',
+ '' => '絣',
+ '' => '絓',
+ '' => '絖',
+ '' => '絧',
+ '' => '絪',
+ '' => '絏',
+ '' => '絭',
+ '' => '絜',
+ '' => '絫',
+ '' => '絒',
+ '' => '絔',
+ '' => '絩',
+ '' => '絑',
+ '' => '絟',
+ '' => '絎',
+ '' => '缾',
+ '' => '缿',
+ '' => '罥',
+ '@' => '罦',
+ 'A' => '羢',
+ 'B' => '羠',
+ 'C' => '羡',
+ 'D' => '翗',
+ 'E' => '聑',
+ 'F' => '聏',
+ 'G' => '聐',
+ 'H' => '胾',
+ 'I' => '胔',
+ 'J' => '腃',
+ 'K' => '腊',
+ 'L' => '腒',
+ 'M' => '腏',
+ 'N' => '腇',
+ 'O' => '脽',
+ 'P' => '腍',
+ 'Q' => '脺',
+ 'R' => '臦',
+ 'S' => '臮',
+ 'T' => '臷',
+ 'U' => '臸',
+ 'V' => '臹',
+ 'W' => '舄',
+ 'X' => '舼',
+ 'Y' => '舽',
+ 'Z' => '舿',
+ '[' => '艵',
+ '\\' => '茻',
+ ']' => '菏',
+ '^' => '菹',
+ '_' => '萣',
+ '`' => '菀',
+ 'a' => '菨',
+ 'b' => '萒',
+ 'c' => '菧',
+ 'd' => '菤',
+ 'e' => '菼',
+ 'f' => '菶',
+ 'g' => '萐',
+ 'h' => '菆',
+ 'i' => '菈',
+ 'j' => '菫',
+ 'k' => '菣',
+ 'l' => '莿',
+ 'm' => '萁',
+ 'n' => '菝',
+ 'o' => '菥',
+ 'p' => '菘',
+ 'q' => '菿',
+ 'r' => '菡',
+ 's' => '菋',
+ 't' => '菎',
+ 'u' => '菖',
+ 'v' => '菵',
+ 'w' => '菉',
+ 'x' => '萉',
+ 'y' => '萏',
+ 'z' => '菞',
+ '{' => '萑',
+ '|' => '萆',
+ '}' => '菂',
+ '~' => '菳',
+ 'ۡ' => '菕',
+ 'ۢ' => '菺',
+ 'ۣ' => '菇',
+ 'ۤ' => '菑',
+ 'ۥ' => '菪',
+ 'ۦ' => '萓',
+ 'ۧ' => '菃',
+ 'ۨ' => '菬',
+ '۩' => '菮',
+ '۪' => '菄',
+ '۫' => '菻',
+ '۬' => '菗',
+ 'ۭ' => '菢',
+ 'ۮ' => '萛',
+ 'ۯ' => '菛',
+ '۰' => '菾',
+ '۱' => '蛘',
+ '۲' => '蛢',
+ '۳' => '蛦',
+ '۴' => '蛓',
+ '۵' => '蛣',
+ '۶' => '蛚',
+ '۷' => '蛪',
+ '۸' => '蛝',
+ '۹' => '蛫',
+ 'ۺ' => '蛜',
+ 'ۻ' => '蛬',
+ 'ۼ' => '蛩',
+ '۽' => '蛗',
+ '۾' => '蛨',
+ 'ۿ' => '蛑',
+ '' => '衈',
+ '' => '衖',
+ '' => '衕',
+ '' => '袺',
+ '' => '裗',
+ '' => '袹',
+ '' => '袸',
+ '' => '裀',
+ '' => '袾',
+ '' => '袶',
+ '' => '袼',
+ '' => '袷',
+ '' => '袽',
+ '' => '袲',
+ '' => '褁',
+ '' => '裉',
+ '' => '覕',
+ '' => '覘',
+ '' => '覗',
+ '' => '觝',
+ '' => '觚',
+ '' => '觛',
+ '' => '詎',
+ '' => '詍',
+ '' => '訹',
+ '' => '詙',
+ '' => '詀',
+ '' => '詗',
+ '' => '詘',
+ '' => '詄',
+ '' => '詅',
+ '' => '詒',
+ '' => '詈',
+ '' => '詑',
+ '' => '詊',
+ '' => '詌',
+ '' => '詏',
+ '' => '豟',
+ '' => '貁',
+ '' => '貀',
+ '' => '貺',
+ '' => '貾',
+ '' => '貰',
+ '' => '貹',
+ '' => '貵',
+ '' => '趄',
+ '' => '趀',
+ '' => '趉',
+ '' => '跘',
+ '' => '跓',
+ '' => '跍',
+ '' => '跇',
+ '' => '跖',
+ '' => '跜',
+ '' => '跏',
+ '' => '跕',
+ '' => '跙',
+ '' => '跈',
+ '' => '跗',
+ '' => '跅',
+ '' => '軯',
+ '' => '軷',
+ '' => '軺',
+ '@' => '軹',
+ 'A' => '軦',
+ 'B' => '軮',
+ 'C' => '軥',
+ 'D' => '軵',
+ 'E' => '軧',
+ 'F' => '軨',
+ 'G' => '軶',
+ 'H' => '軫',
+ 'I' => '軱',
+ 'J' => '軬',
+ 'K' => '軴',
+ 'L' => '軩',
+ 'M' => '逭',
+ 'N' => '逴',
+ 'O' => '逯',
+ 'P' => '鄆',
+ 'Q' => '鄬',
+ 'R' => '鄄',
+ 'S' => '郿',
+ 'T' => '郼',
+ 'U' => '鄈',
+ 'V' => '郹',
+ 'W' => '郻',
+ 'X' => '鄁',
+ 'Y' => '鄀',
+ 'Z' => '鄇',
+ '[' => '鄅',
+ '\\' => '鄃',
+ ']' => '酡',
+ '^' => '酤',
+ '_' => '酟',
+ '`' => '酢',
+ 'a' => '酠',
+ 'b' => '鈁',
+ 'c' => '鈊',
+ 'd' => '鈥',
+ 'e' => '鈃',
+ 'f' => '鈚',
+ 'g' => '鈦',
+ 'h' => '鈏',
+ 'i' => '鈌',
+ 'j' => '鈀',
+ 'k' => '鈒',
+ 'l' => '釿',
+ 'm' => '釽',
+ 'n' => '鈆',
+ 'o' => '鈄',
+ 'p' => '鈧',
+ 'q' => '鈂',
+ 'r' => '鈜',
+ 's' => '鈤',
+ 't' => '鈙',
+ 'u' => '鈗',
+ 'v' => '鈅',
+ 'w' => '鈖',
+ 'x' => '镻',
+ 'y' => '閍',
+ 'z' => '閌',
+ '{' => '閐',
+ '|' => '隇',
+ '}' => '陾',
+ '~' => '隈',
+ 'ܡ' => '隉',
+ 'ܢ' => '隃',
+ 'ܣ' => '隀',
+ 'ܤ' => '雂',
+ 'ܥ' => '雈',
+ 'ܦ' => '雃',
+ 'ܧ' => '雱',
+ 'ܨ' => '雰',
+ 'ܩ' => '靬',
+ 'ܪ' => '靰',
+ 'ܫ' => '靮',
+ 'ܬ' => '頇',
+ 'ܭ' => '颩',
+ 'ܮ' => '飫',
+ 'ܯ' => '鳦',
+ 'ܰ' => '黹',
+ 'ܱ' => '亃',
+ 'ܲ' => '亄',
+ 'ܳ' => '亶',
+ 'ܴ' => '傽',
+ 'ܵ' => '傿',
+ 'ܶ' => '僆',
+ 'ܷ' => '傮',
+ 'ܸ' => '僄',
+ 'ܹ' => '僊',
+ 'ܺ' => '傴',
+ 'ܻ' => '僈',
+ 'ܼ' => '僂',
+ 'ܽ' => '傰',
+ 'ܾ' => '僁',
+ 'ܿ' => '傺',
+ '' => '傱',
+ '' => '僋',
+ '' => '僉',
+ '' => '傶',
+ '' => '傸',
+ '' => '凗',
+ '' => '剺',
+ '' => '剸',
+ '' => '剻',
+ '' => '剼',
+ '' => '嗃',
+ '' => '嗛',
+ '' => '嗌',
+ '' => '嗐',
+ '' => '嗋',
+ '' => '嗊',
+ '' => '嗝',
+ '' => '嗀',
+ '' => '嗔',
+ '' => '嗄',
+ '' => '嗩',
+ '' => '喿',
+ '' => '嗒',
+ '' => '喍',
+ '' => '嗏',
+ '' => '嗕',
+ '' => '嗢',
+ '' => '嗖',
+ '' => '嗈',
+ '' => '嗲',
+ '' => '嗍',
+ '' => '嗙',
+ '' => '嗂',
+ '' => '圔',
+ '' => '塓',
+ '' => '塨',
+ '' => '塤',
+ '' => '塏',
+ '' => '塍',
+ '' => '塉',
+ '' => '塯',
+ '' => '塕',
+ '' => '塎',
+ '' => '塝',
+ '' => '塙',
+ '' => '塥',
+ '' => '塛',
+ '' => '堽',
+ '' => '塣',
+ '' => '塱',
+ '' => '壼',
+ '' => '嫇',
+ '' => '嫄',
+ '' => '嫋',
+ '' => '媺',
+ '' => '媸',
+ '' => '媱',
+ '' => '媵',
+ '' => '媰',
+ '' => '媿',
+ '' => '嫈',
+ '' => '媻',
+ '' => '嫆',
+ '@' => '媷',
+ 'A' => '嫀',
+ 'B' => '嫊',
+ 'C' => '媴',
+ 'D' => '媶',
+ 'E' => '嫍',
+ 'F' => '媹',
+ 'G' => '媐',
+ 'H' => '寖',
+ 'I' => '寘',
+ 'J' => '寙',
+ 'K' => '尟',
+ 'L' => '尳',
+ 'M' => '嵱',
+ 'N' => '嵣',
+ 'O' => '嵊',
+ 'P' => '嵥',
+ 'Q' => '嵲',
+ 'R' => '嵬',
+ 'S' => '嵞',
+ 'T' => '嵨',
+ 'U' => '嵧',
+ 'V' => '嵢',
+ 'W' => '巰',
+ 'X' => '幏',
+ 'Y' => '幎',
+ 'Z' => '幊',
+ '[' => '幍',
+ '\\' => '幋',
+ ']' => '廅',
+ '^' => '廌',
+ '_' => '廆',
+ '`' => '廋',
+ 'a' => '廇',
+ 'b' => '彀',
+ 'c' => '徯',
+ 'd' => '徭',
+ 'e' => '惷',
+ 'f' => '慉',
+ 'g' => '慊',
+ 'h' => '愫',
+ 'i' => '慅',
+ 'j' => '愶',
+ 'k' => '愲',
+ 'l' => '愮',
+ 'm' => '慆',
+ 'n' => '愯',
+ 'o' => '慏',
+ 'p' => '愩',
+ 'q' => '慀',
+ 'r' => '戠',
+ 's' => '酨',
+ 't' => '戣',
+ 'u' => '戥',
+ 'v' => '戤',
+ 'w' => '揅',
+ 'x' => '揱',
+ 'y' => '揫',
+ 'z' => '搐',
+ '{' => '搒',
+ '|' => '搉',
+ '}' => '搠',
+ '~' => '搤',
+ 'ݡ' => '搳',
+ 'ݢ' => '摃',
+ 'ݣ' => '搟',
+ 'ݤ' => '搕',
+ 'ݥ' => '搘',
+ 'ݦ' => '搹',
+ 'ݧ' => '搷',
+ 'ݨ' => '搢',
+ 'ݩ' => '搣',
+ 'ݪ' => '搌',
+ 'ݫ' => '搦',
+ 'ݬ' => '搰',
+ 'ݭ' => '搨',
+ 'ݮ' => '摁',
+ 'ݯ' => '搵',
+ 'ݰ' => '搯',
+ 'ݱ' => '搊',
+ 'ݲ' => '搚',
+ 'ݳ' => '摀',
+ 'ݴ' => '搥',
+ 'ݵ' => '搧',
+ 'ݶ' => '搋',
+ 'ݷ' => '揧',
+ 'ݸ' => '搛',
+ 'ݹ' => '搮',
+ 'ݺ' => '搡',
+ 'ݻ' => '搎',
+ 'ݼ' => '敯',
+ 'ݽ' => '斒',
+ 'ݾ' => '旓',
+ 'ݿ' => '暆',
+ '' => '暌',
+ '' => '暕',
+ '' => '暐',
+ '' => '暋',
+ '' => '暊',
+ '' => '暙',
+ '' => '暔',
+ '' => '晸',
+ '' => '朠',
+ '' => '楦',
+ '' => '楟',
+ '' => '椸',
+ '' => '楎',
+ '' => '楢',
+ '' => '楱',
+ '' => '椿',
+ '' => '楅',
+ '' => '楪',
+ '' => '椹',
+ '' => '楂',
+ '' => '楗',
+ '' => '楙',
+ '' => '楺',
+ '' => '楈',
+ '' => '楉',
+ '' => '椵',
+ '' => '楬',
+ '' => '椳',
+ '' => '椽',
+ '' => '楥',
+ '' => '棰',
+ '' => '楸',
+ '' => '椴',
+ '' => '楩',
+ '' => '楀',
+ '' => '楯',
+ '' => '楄',
+ '' => '楶',
+ '' => '楘',
+ '' => '楁',
+ '' => '楴',
+ '' => '楌',
+ '' => '椻',
+ '' => '楋',
+ '' => '椷',
+ '' => '楜',
+ '' => '楏',
+ '' => '楑',
+ '' => '椲',
+ '' => '楒',
+ '' => '椯',
+ '' => '楻',
+ '' => '椼',
+ '' => '歆',
+ '' => '歅',
+ '' => '歃',
+ '' => '歂',
+ '' => '歈',
+ '' => '歁',
+ '' => '殛',
+ '' => '嗀',
+ '' => '毻',
+ '' => '毼',
+ '@' => '毹',
+ 'A' => '毷',
+ 'B' => '毸',
+ 'C' => '溛',
+ 'D' => '滖',
+ 'E' => '滈',
+ 'F' => '溏',
+ 'G' => '滀',
+ 'H' => '溟',
+ 'I' => '溓',
+ 'J' => '溔',
+ 'K' => '溠',
+ 'L' => '溱',
+ 'M' => '溹',
+ 'N' => '滆',
+ 'O' => '滒',
+ 'P' => '溽',
+ 'Q' => '滁',
+ 'R' => '溞',
+ 'S' => '滉',
+ 'T' => '溷',
+ 'U' => '溰',
+ 'V' => '滍',
+ 'W' => '溦',
+ 'X' => '滏',
+ 'Y' => '溲',
+ 'Z' => '溾',
+ '[' => '滃',
+ '\\' => '滜',
+ ']' => '滘',
+ '^' => '溙',
+ '_' => '溒',
+ '`' => '溎',
+ 'a' => '溍',
+ 'b' => '溤',
+ 'c' => '溡',
+ 'd' => '溿',
+ 'e' => '溳',
+ 'f' => '滐',
+ 'g' => '滊',
+ 'h' => '溗',
+ 'i' => '溮',
+ 'j' => '溣',
+ 'k' => '煇',
+ 'l' => '煔',
+ 'm' => '煒',
+ 'n' => '煣',
+ 'o' => '煠',
+ 'p' => '煁',
+ 'q' => '煝',
+ 'r' => '煢',
+ 's' => '煲',
+ 't' => '煸',
+ 'u' => '煪',
+ 'v' => '煡',
+ 'w' => '煂',
+ 'x' => '煘',
+ 'y' => '煃',
+ 'z' => '煋',
+ '{' => '煰',
+ '|' => '煟',
+ '}' => '煐',
+ '~' => '煓',
+ 'ޡ' => '煄',
+ 'ޢ' => '煍',
+ 'ޣ' => '煚',
+ 'ޤ' => '牏',
+ 'ޥ' => '犍',
+ 'ަ' => '犌',
+ 'ާ' => '犑',
+ 'ި' => '犐',
+ 'ީ' => '犎',
+ 'ު' => '猼',
+ 'ޫ' => '獂',
+ 'ެ' => '猻',
+ 'ޭ' => '猺',
+ 'ޮ' => '獀',
+ 'ޯ' => '獊',
+ 'ް' => '獉',
+ 'ޱ' => '瑄',
+ '' => '瑊',
+ '' => '瑋',
+ '' => '瑒',
+ '' => '瑑',
+ '' => '瑗',
+ '' => '瑀',
+ '' => '瑏',
+ '' => '瑐',
+ '' => '瑎',
+ '' => '瑂',
+ '' => '瑆',
+ '' => '瑍',
+ '' => '瑔',
+ '' => '瓡',
+ '' => '瓿',
+ '' => '瓾',
+ '' => '瓽',
+ '' => '甝',
+ '' => '畹',
+ '' => '畷',
+ '' => '榃',
+ '' => '痯',
+ '' => '瘏',
+ '' => '瘃',
+ '' => '痷',
+ '' => '痾',
+ '' => '痼',
+ '' => '痹',
+ '' => '痸',
+ '' => '瘐',
+ '' => '痻',
+ '' => '痶',
+ '' => '痭',
+ '' => '痵',
+ '' => '痽',
+ '' => '皙',
+ '' => '皵',
+ '' => '盝',
+ '' => '睕',
+ '' => '睟',
+ '' => '睠',
+ '' => '睒',
+ '' => '睖',
+ '' => '睚',
+ '' => '睩',
+ '' => '睧',
+ '' => '睔',
+ '' => '睙',
+ '' => '睭',
+ '' => '矠',
+ '' => '碇',
+ '' => '碚',
+ '' => '碔',
+ '' => '碏',
+ '' => '碄',
+ '' => '碕',
+ '' => '碅',
+ '' => '碆',
+ '' => '碡',
+ '' => '碃',
+ '' => '硹',
+ '' => '碙',
+ '' => '碀',
+ '' => '碖',
+ '' => '硻',
+ '' => '祼',
+ '' => '禂',
+ '' => '祽',
+ '' => '祹',
+ '' => '稑',
+ '' => '稘',
+ '' => '稙',
+ '' => '稒',
+ '' => '稗',
+ '' => '稕',
+ '' => '稢',
+ '' => '稓',
+ '@' => '稛',
+ 'A' => '稐',
+ 'B' => '窣',
+ 'C' => '窢',
+ 'D' => '窞',
+ 'E' => '竫',
+ 'F' => '筦',
+ 'G' => '筤',
+ 'H' => '筭',
+ 'I' => '筴',
+ 'J' => '筩',
+ 'K' => '筲',
+ 'L' => '筥',
+ 'M' => '筳',
+ 'N' => '筱',
+ 'O' => '筰',
+ 'P' => '筡',
+ 'Q' => '筸',
+ 'R' => '筶',
+ 'S' => '筣',
+ 'T' => '粲',
+ 'U' => '粴',
+ 'V' => '粯',
+ 'W' => '綈',
+ 'X' => '綆',
+ 'Y' => '綀',
+ 'Z' => '綍',
+ '[' => '絿',
+ '\\' => '綅',
+ ']' => '絺',
+ '^' => '綎',
+ '_' => '絻',
+ '`' => '綃',
+ 'a' => '絼',
+ 'b' => '綌',
+ 'c' => '綔',
+ 'd' => '綄',
+ 'e' => '絽',
+ 'f' => '綒',
+ 'g' => '罭',
+ 'h' => '罫',
+ 'i' => '罧',
+ 'j' => '罨',
+ 'k' => '罬',
+ 'l' => '羦',
+ 'm' => '羥',
+ 'n' => '羧',
+ 'o' => '翛',
+ 'p' => '翜',
+ 'q' => '耡',
+ 'r' => '腤',
+ 's' => '腠',
+ 't' => '腷',
+ 'u' => '腜',
+ 'v' => '腩',
+ 'w' => '腛',
+ 'x' => '腢',
+ 'y' => '腲',
+ 'z' => '朡',
+ '{' => '腞',
+ '|' => '腶',
+ '}' => '腧',
+ '~' => '腯',
+ 'ߡ' => '腄',
+ 'ߢ' => '腡',
+ 'ߣ' => '舝',
+ 'ߤ' => '艉',
+ 'ߥ' => '艄',
+ 'ߦ' => '艀',
+ 'ߧ' => '艂',
+ 'ߨ' => '艅',
+ 'ߩ' => '蓱',
+ 'ߪ' => '萿',
+ '߫' => '葖',
+ '߬' => '葶',
+ '߭' => '葹',
+ '߮' => '蒏',
+ '߯' => '蒍',
+ '߰' => '葥',
+ '߱' => '葑',
+ '߲' => '葀',
+ '߳' => '蒆',
+ 'ߴ' => '葧',
+ 'ߵ' => '萰',
+ '߶' => '葍',
+ '߷' => '葽',
+ '߸' => '葚',
+ '߹' => '葙',
+ 'ߺ' => '葴',
+ '' => '葳',
+ '' => '葝',
+ '߽' => '蔇',
+ '߾' => '葞',
+ '߿' => '萷',
+ '' => '萺',
+ '' => '萴',
+ '' => '葺',
+ '' => '葃',
+ '' => '葸',
+ '' => '萲',
+ '' => '葅',
+ '' => '萩',
+ '' => '菙',
+ '' => '葋',
+ '' => '萯',
+ '' => '葂',
+ '' => '萭',
+ '' => '葟',
+ '' => '葰',
+ '' => '萹',
+ '' => '葎',
+ '' => '葌',
+ '' => '葒',
+ '' => '葯',
+ '' => '蓅',
+ '' => '蒎',
+ '' => '萻',
+ '' => '葇',
+ '' => '萶',
+ '' => '萳',
+ '' => '葨',
+ '' => '葾',
+ '' => '葄',
+ '' => '萫',
+ '' => '葠',
+ '' => '葔',
+ '' => '葮',
+ '' => '葐',
+ '' => '蜋',
+ '' => '蜄',
+ '' => '蛷',
+ '' => '蜌',
+ '' => '蛺',
+ '' => '蛖',
+ '' => '蛵',
+ '' => '蝍',
+ '' => '蛸',
+ '' => '蜎',
+ '' => '蜉',
+ '' => '蜁',
+ '' => '蛶',
+ '' => '蜍',
+ '' => '蜅',
+ '' => '裖',
+ '' => '裋',
+ '' => '裍',
+ '' => '裎',
+ '' => '裞',
+ '' => '裛',
+ '' => '裚',
+ '' => '裌',
+ '' => '裐',
+ '' => '覅',
+ '' => '覛',
+ '' => '觟',
+ '' => '觥',
+ '' => '觤',
+ '@' => '觡',
+ 'A' => '觠',
+ 'B' => '觢',
+ 'C' => '觜',
+ 'D' => '触',
+ 'E' => '詶',
+ 'F' => '誆',
+ 'G' => '詿',
+ 'H' => '詡',
+ 'I' => '訿',
+ 'J' => '詷',
+ 'K' => '誂',
+ 'L' => '誄',
+ 'M' => '詵',
+ 'N' => '誃',
+ 'O' => '誁',
+ 'P' => '詴',
+ 'Q' => '詺',
+ 'R' => '谼',
+ 'S' => '豋',
+ 'T' => '豊',
+ 'U' => '豥',
+ 'V' => '豤',
+ 'W' => '豦',
+ 'X' => '貆',
+ 'Y' => '貄',
+ 'Z' => '貅',
+ '[' => '賌',
+ '\\' => '赨',
+ ']' => '赩',
+ '^' => '趑',
+ '_' => '趌',
+ '`' => '趎',
+ 'a' => '趏',
+ 'b' => '趍',
+ 'c' => '趓',
+ 'd' => '趔',
+ 'e' => '趐',
+ 'f' => '趒',
+ 'g' => '跰',
+ 'h' => '跠',
+ 'i' => '跬',
+ 'j' => '跱',
+ 'k' => '跮',
+ 'l' => '跐',
+ 'm' => '跩',
+ 'n' => '跣',
+ 'o' => '跢',
+ 'p' => '跧',
+ 'q' => '跲',
+ 'r' => '跫',
+ 's' => '跴',
+ 't' => '輆',
+ 'u' => '軿',
+ 'v' => '輁',
+ 'w' => '輀',
+ 'x' => '輅',
+ 'y' => '輇',
+ 'z' => '輈',
+ '{' => '輂',
+ '|' => '輋',
+ '}' => '遒',
+ '~' => '逿',
+ '' => '遄',
+ '' => '遉',
+ '' => '逽',
+ '' => '鄐',
+ '' => '鄍',
+ '' => '鄏',
+ '' => '鄑',
+ '' => '鄖',
+ '' => '鄔',
+ '' => '鄋',
+ '' => '鄎',
+ '' => '酮',
+ '' => '酯',
+ '' => '鉈',
+ '' => '鉒',
+ '' => '鈰',
+ '' => '鈺',
+ '' => '鉦',
+ '' => '鈳',
+ '' => '鉥',
+ '' => '鉞',
+ '' => '銃',
+ '' => '鈮',
+ '' => '鉊',
+ '' => '鉆',
+ '' => '鉭',
+ '' => '鉬',
+ '' => '鉏',
+ '' => '鉠',
+ '' => '鉧',
+ '' => '鉯',
+ '' => '鈶',
+ '' => '鉡',
+ '' => '鉰',
+ '' => '鈱',
+ '' => '鉔',
+ '' => '鉣',
+ '' => '鉐',
+ '' => '鉲',
+ '' => '鉎',
+ '' => '鉓',
+ '' => '鉌',
+ '' => '鉖',
+ '' => '鈲',
+ '' => '閟',
+ '' => '閜',
+ '' => '閞',
+ '' => '閛',
+ '' => '隒',
+ '' => '隓',
+ '' => '隑',
+ '' => '隗',
+ '' => '雎',
+ '' => '雺',
+ '' => '雽',
+ '' => '雸',
+ '' => '雵',
+ '' => '靳',
+ '' => '靷',
+ '' => '靸',
+ '' => '靲',
+ '' => '頏',
+ '' => '頍',
+ '' => '頎',
+ '' => '颬',
+ '' => '飶',
+ '' => '飹',
+ '' => '馯',
+ '' => '馲',
+ '' => '馰',
+ '' => '馵',
+ '' => '骭',
+ '' => '骫',
+ '' => '魛',
+ '' => '鳪',
+ '' => '鳭',
+ '' => '鳧',
+ '' => '麀',
+ '' => '黽',
+ '' => '僦',
+ '' => '僔',
+ '' => '僗',
+ '' => '僨',
+ '' => '僳',
+ '' => '僛',
+ '' => '僪',
+ '' => '僝',
+ '' => '僤',
+ '' => '僓',
+ '' => '僬',
+ '' => '僰',
+ '' => '僯',
+ '' => '僣',
+ '' => '僠',
+ '@' => '凘',
+ 'A' => '劀',
+ 'B' => '劁',
+ 'C' => '勩',
+ 'D' => '勫',
+ 'E' => '匰',
+ 'F' => '厬',
+ 'G' => '嘧',
+ 'H' => '嘕',
+ 'I' => '嘌',
+ 'J' => '嘒',
+ 'K' => '嗼',
+ 'L' => '嘏',
+ 'M' => '嘜',
+ 'N' => '嘁',
+ 'O' => '嘓',
+ 'P' => '嘂',
+ 'Q' => '嗺',
+ 'R' => '嘝',
+ 'S' => '嘄',
+ 'T' => '嗿',
+ 'U' => '嗹',
+ 'V' => '墉',
+ 'W' => '塼',
+ 'X' => '墐',
+ 'Y' => '墘',
+ 'Z' => '墆',
+ '[' => '墁',
+ '\\' => '塿',
+ ']' => '塴',
+ '^' => '墋',
+ '_' => '塺',
+ '`' => '墇',
+ 'a' => '墑',
+ 'b' => '墎',
+ 'c' => '塶',
+ 'd' => '墂',
+ 'e' => '墈',
+ 'f' => '塻',
+ 'g' => '墔',
+ 'h' => '墏',
+ 'i' => '壾',
+ 'j' => '奫',
+ 'k' => '嫜',
+ 'l' => '嫮',
+ 'm' => '嫥',
+ 'n' => '嫕',
+ 'o' => '嫪',
+ 'p' => '嫚',
+ 'q' => '嫭',
+ 'r' => '嫫',
+ 's' => '嫳',
+ 't' => '嫢',
+ 'u' => '嫠',
+ 'v' => '嫛',
+ 'w' => '嫬',
+ 'x' => '嫞',
+ 'y' => '嫝',
+ 'z' => '嫙',
+ '{' => '嫨',
+ '|' => '嫟',
+ '}' => '孷',
+ '~' => '寠',
+ '' => '寣',
+ '' => '屣',
+ '' => '嶂',
+ '' => '嶀',
+ '' => '嵽',
+ '' => '嶆',
+ '' => '嵺',
+ '' => '嶁',
+ '' => '嵷',
+ '' => '嶊',
+ '' => '嶉',
+ '' => '嶈',
+ '' => '嵾',
+ '' => '嵼',
+ '' => '嶍',
+ '' => '嵹',
+ '' => '嵿',
+ '' => '幘',
+ '' => '幙',
+ '' => '幓',
+ '' => '廘',
+ '' => '廑',
+ '' => '廗',
+ '' => '廎',
+ '' => '廜',
+ '' => '廕',
+ '' => '廙',
+ '' => '廒',
+ '' => '廔',
+ '' => '彄',
+ '' => '彃',
+ '' => '彯',
+ '' => '徶',
+ '' => '愬',
+ '' => '愨',
+ '' => '慁',
+ '' => '慞',
+ '' => '慱',
+ '' => '慳',
+ '' => '慒',
+ '' => '慓',
+ '' => '慲',
+ '' => '慬',
+ '' => '憀',
+ '' => '慴',
+ '' => '慔',
+ '' => '慺',
+ '' => '慛',
+ '' => '慥',
+ '' => '愻',
+ '' => '慪',
+ '' => '慡',
+ '' => '慖',
+ '' => '戩',
+ '' => '戧',
+ '' => '戫',
+ '' => '搫',
+ '' => '摍',
+ '' => '摛',
+ '' => '摝',
+ '' => '摴',
+ '' => '摶',
+ '' => '摲',
+ '' => '摳',
+ '' => '摽',
+ '' => '摵',
+ '' => '摦',
+ '' => '撦',
+ '' => '摎',
+ '' => '撂',
+ '' => '摞',
+ '' => '摜',
+ '' => '摋',
+ '' => '摓',
+ '' => '摠',
+ '' => '摐',
+ '' => '摿',
+ '' => '搿',
+ '' => '摬',
+ '' => '摫',
+ '' => '摙',
+ '' => '摥',
+ '' => '摷',
+ '' => '敳',
+ '' => '斠',
+ '' => '暡',
+ '' => '暠',
+ '' => '暟',
+ '' => '朅',
+ '' => '朄',
+ '' => '朢',
+ '' => '榱',
+ '' => '榶',
+ '' => '槉',
+ '@' => '榠',
+ 'A' => '槎',
+ 'B' => '榖',
+ 'C' => '榰',
+ 'D' => '榬',
+ 'E' => '榼',
+ 'F' => '榑',
+ 'G' => '榙',
+ 'H' => '榎',
+ 'I' => '榧',
+ 'J' => '榍',
+ 'K' => '榩',
+ 'L' => '榾',
+ 'M' => '榯',
+ 'N' => '榿',
+ 'O' => '槄',
+ 'P' => '榽',
+ 'Q' => '榤',
+ 'R' => '槔',
+ 'S' => '榹',
+ 'T' => '槊',
+ 'U' => '榚',
+ 'V' => '槏',
+ 'W' => '榳',
+ 'X' => '榓',
+ 'Y' => '榪',
+ 'Z' => '榡',
+ '[' => '榞',
+ '\\' => '槙',
+ ']' => '榗',
+ '^' => '榐',
+ '_' => '槂',
+ '`' => '榵',
+ 'a' => '榥',
+ 'b' => '槆',
+ 'c' => '歊',
+ 'd' => '歍',
+ 'e' => '歋',
+ 'f' => '殞',
+ 'g' => '殟',
+ 'h' => '殠',
+ 'i' => '毃',
+ 'j' => '毄',
+ 'k' => '毾',
+ 'l' => '滎',
+ 'm' => '滵',
+ 'n' => '滱',
+ 'o' => '漃',
+ 'p' => '漥',
+ 'q' => '滸',
+ 'r' => '漷',
+ 's' => '滻',
+ 't' => '漮',
+ 'u' => '漉',
+ 'v' => '潎',
+ 'w' => '漙',
+ 'x' => '漚',
+ 'y' => '漧',
+ 'z' => '漘',
+ '{' => '漻',
+ '|' => '漒',
+ '}' => '滭',
+ '~' => '漊',
+ '' => '漶',
+ '' => '潳',
+ '' => '滹',
+ '' => '滮',
+ '' => '漭',
+ '' => '潀',
+ '' => '漰',
+ '' => '漼',
+ '' => '漵',
+ '' => '滫',
+ '' => '漇',
+ '' => '漎',
+ '' => '潃',
+ '' => '漅',
+ '' => '滽',
+ '' => '滶',
+ '' => '漹',
+ '' => '漜',
+ '' => '滼',
+ '' => '漺',
+ '' => '漟',
+ '' => '漍',
+ '' => '漞',
+ '' => '漈',
+ '' => '漡',
+ '' => '熇',
+ '' => '熐',
+ '' => '熉',
+ '' => '熀',
+ '' => '熅',
+ '' => '熂',
+ '' => '熏',
+ '' => '煻',
+ '' => '熆',
+ '' => '熁',
+ '' => '熗',
+ '' => '牄',
+ '' => '牓',
+ '' => '犗',
+ '' => '犕',
+ '' => '犓',
+ '' => '獃',
+ '' => '獍',
+ '' => '獑',
+ '' => '獌',
+ '' => '瑢',
+ '' => '瑳',
+ '' => '瑱',
+ '' => '瑵',
+ '' => '瑲',
+ '' => '瑧',
+ '' => '瑮',
+ '' => '甀',
+ '' => '甂',
+ '' => '甃',
+ '' => '畽',
+ '' => '疐',
+ '' => '瘖',
+ '' => '瘈',
+ '' => '瘌',
+ '' => '瘕',
+ '' => '瘑',
+ '' => '瘊',
+ '' => '瘔',
+ '' => '皸',
+ '' => '瞁',
+ '' => '睼',
+ '' => '瞅',
+ '' => '瞂',
+ '' => '睮',
+ '' => '瞀',
+ '' => '睯',
+ '' => '睾',
+ '' => '瞃',
+ '' => '碲',
+ '' => '碪',
+ '' => '碴',
+ '' => '碭',
+ '' => '碨',
+ '' => '硾',
+ '' => '碫',
+ '' => '碞',
+ '' => '碥',
+ '' => '碠',
+ '' => '碬',
+ '' => '碢',
+ '' => '碤',
+ '' => '禘',
+ '' => '禊',
+ '' => '禋',
+ '' => '禖',
+ '' => '禕',
+ '' => '禔',
+ '' => '禓',
+ '@' => '禗',
+ 'A' => '禈',
+ 'B' => '禒',
+ 'C' => '禐',
+ 'D' => '稫',
+ 'E' => '穊',
+ 'F' => '稰',
+ 'G' => '稯',
+ 'H' => '稨',
+ 'I' => '稦',
+ 'J' => '窨',
+ 'K' => '窫',
+ 'L' => '窬',
+ 'M' => '竮',
+ 'N' => '箈',
+ 'O' => '箜',
+ 'P' => '箊',
+ 'Q' => '箑',
+ 'R' => '箐',
+ 'S' => '箖',
+ 'T' => '箍',
+ 'U' => '箌',
+ 'V' => '箛',
+ 'W' => '箎',
+ 'X' => '箅',
+ 'Y' => '箘',
+ 'Z' => '劄',
+ '[' => '箙',
+ '\\' => '箤',
+ ']' => '箂',
+ '^' => '粻',
+ '_' => '粿',
+ '`' => '粼',
+ 'a' => '粺',
+ 'b' => '綧',
+ 'c' => '綷',
+ 'd' => '緂',
+ 'e' => '綣',
+ 'f' => '綪',
+ 'g' => '緁',
+ 'h' => '緀',
+ 'i' => '緅',
+ 'j' => '綝',
+ 'k' => '緎',
+ 'l' => '緄',
+ 'm' => '緆',
+ 'n' => '緋',
+ 'o' => '緌',
+ 'p' => '綯',
+ 'q' => '綹',
+ 'r' => '綖',
+ 's' => '綼',
+ 't' => '綟',
+ 'u' => '綦',
+ 'v' => '綮',
+ 'w' => '綩',
+ 'x' => '綡',
+ 'y' => '緉',
+ 'z' => '罳',
+ '{' => '翢',
+ '|' => '翣',
+ '}' => '翥',
+ '~' => '翞',
+ '' => '耤',
+ '' => '聝',
+ '' => '聜',
+ '' => '膉',
+ '' => '膆',
+ '' => '膃',
+ '' => '膇',
+ '' => '膍',
+ '' => '膌',
+ '' => '膋',
+ '' => '舕',
+ '' => '蒗',
+ '' => '蒤',
+ '' => '蒡',
+ '' => '蒟',
+ '' => '蒺',
+ '' => '蓎',
+ '' => '蓂',
+ '' => '蒬',
+ '' => '蒮',
+ '' => '蒫',
+ '' => '蒹',
+ '' => '蒴',
+ '' => '蓁',
+ '' => '蓍',
+ '' => '蒪',
+ '' => '蒚',
+ '' => '蒱',
+ '' => '蓐',
+ '' => '蒝',
+ '' => '蒧',
+ '' => '蒻',
+ '' => '蒢',
+ '' => '蒔',
+ '' => '蓇',
+ '' => '蓌',
+ '' => '蒛',
+ '' => '蒩',
+ '' => '蒯',
+ '' => '蒨',
+ '' => '蓖',
+ '' => '蒘',
+ '' => '蒶',
+ '' => '蓏',
+ '' => '蒠',
+ '' => '蓗',
+ '' => '蓔',
+ '' => '蓒',
+ '' => '蓛',
+ '' => '蒰',
+ '' => '蒑',
+ '' => '虡',
+ '' => '蜳',
+ '' => '蜣',
+ '' => '蜨',
+ '' => '蝫',
+ '' => '蝀',
+ '' => '蜮',
+ '' => '蜞',
+ '' => '蜡',
+ '' => '蜙',
+ '' => '蜛',
+ '' => '蝃',
+ '' => '蜬',
+ '' => '蝁',
+ '' => '蜾',
+ '' => '蝆',
+ '' => '蜠',
+ '' => '蜲',
+ '' => '蜪',
+ '' => '蜭',
+ '' => '蜼',
+ '' => '蜒',
+ '' => '蜺',
+ '' => '蜱',
+ '' => '蜵',
+ '' => '蝂',
+ '' => '蜦',
+ '' => '蜧',
+ '' => '蜸',
+ '' => '蜤',
+ '' => '蜚',
+ '' => '蜰',
+ '' => '蜑',
+ '' => '裷',
+ '' => '裧',
+ '' => '裱',
+ '' => '裲',
+ '' => '裺',
+ '' => '裾',
+ '' => '裮',
+ '' => '裼',
+ '' => '裶',
+ '' => '裻',
+ '@' => '裰',
+ 'A' => '裬',
+ 'B' => '裫',
+ 'C' => '覝',
+ 'D' => '覡',
+ 'E' => '覟',
+ 'F' => '覞',
+ 'G' => '觩',
+ 'H' => '觫',
+ 'I' => '觨',
+ 'J' => '誫',
+ 'K' => '誙',
+ 'L' => '誋',
+ 'M' => '誒',
+ 'N' => '誏',
+ 'O' => '誖',
+ 'P' => '谽',
+ 'Q' => '豨',
+ 'R' => '豩',
+ 'S' => '賕',
+ 'T' => '賏',
+ 'U' => '賗',
+ 'V' => '趖',
+ 'W' => '踉',
+ 'X' => '踂',
+ 'Y' => '跿',
+ 'Z' => '踍',
+ '[' => '跽',
+ '\\' => '踊',
+ ']' => '踃',
+ '^' => '踇',
+ '_' => '踆',
+ '`' => '踅',
+ 'a' => '跾',
+ 'b' => '踀',
+ 'c' => '踄',
+ 'd' => '輐',
+ 'e' => '輑',
+ 'f' => '輎',
+ 'g' => '輍',
+ 'h' => '鄣',
+ 'i' => '鄜',
+ 'j' => '鄠',
+ 'k' => '鄢',
+ 'l' => '鄟',
+ 'm' => '鄝',
+ 'n' => '鄚',
+ 'o' => '鄤',
+ 'p' => '鄡',
+ 'q' => '鄛',
+ 'r' => '酺',
+ 's' => '酲',
+ 't' => '酹',
+ 'u' => '酳',
+ 'v' => '銥',
+ 'w' => '銤',
+ 'x' => '鉶',
+ 'y' => '銛',
+ 'z' => '鉺',
+ '{' => '銠',
+ '|' => '銔',
+ '}' => '銪',
+ '~' => '銍',
+ '' => '銦',
+ '' => '銚',
+ '' => '銫',
+ '' => '鉹',
+ '' => '銗',
+ '' => '鉿',
+ '' => '銣',
+ '' => '鋮',
+ '' => '銎',
+ '' => '銂',
+ '' => '銕',
+ '' => '銢',
+ '' => '鉽',
+ '' => '銈',
+ '' => '銡',
+ '' => '銊',
+ '' => '銆',
+ '' => '銌',
+ '' => '銙',
+ '' => '銧',
+ '' => '鉾',
+ '' => '銇',
+ '' => '銩',
+ '' => '銝',
+ '' => '銋',
+ '' => '鈭',
+ '' => '隞',
+ '' => '隡',
+ '' => '雿',
+ '' => '靘',
+ '' => '靽',
+ '' => '靺',
+ '' => '靾',
+ '' => '鞃',
+ '' => '鞀',
+ '' => '鞂',
+ '' => '靻',
+ '' => '鞄',
+ '' => '鞁',
+ '' => '靿',
+ '' => '韎',
+ '' => '韍',
+ '' => '頖',
+ '' => '颭',
+ '' => '颮',
+ '' => '餂',
+ '' => '餀',
+ '' => '餇',
+ '' => '馝',
+ '' => '馜',
+ '' => '駃',
+ '' => '馹',
+ '' => '馻',
+ '' => '馺',
+ '' => '駂',
+ '' => '馽',
+ '' => '駇',
+ '' => '骱',
+ '' => '髣',
+ '' => '髧',
+ '' => '鬾',
+ '' => '鬿',
+ '' => '魠',
+ '' => '魡',
+ '' => '魟',
+ '' => '鳱',
+ '' => '鳲',
+ '' => '鳵',
+ '' => '麧',
+ '' => '僿',
+ '' => '儃',
+ '' => '儰',
+ '' => '僸',
+ '' => '儆',
+ '' => '儇',
+ '' => '僶',
+ '' => '僾',
+ '' => '儋',
+ '' => '儌',
+ '' => '僽',
+ '' => '儊',
+ '' => '劋',
+ '' => '劌',
+ '' => '勱',
+ '' => '勯',
+ '' => '噈',
+ '' => '噂',
+ '' => '噌',
+ '' => '嘵',
+ '' => '噁',
+ '' => '噊',
+ '' => '噉',
+ '' => '噆',
+ '' => '噘',
+ '@' => '噚',
+ 'A' => '噀',
+ 'B' => '嘳',
+ 'C' => '嘽',
+ 'D' => '嘬',
+ 'E' => '嘾',
+ 'F' => '嘸',
+ 'G' => '嘪',
+ 'H' => '嘺',
+ 'I' => '圚',
+ 'J' => '墫',
+ 'K' => '墝',
+ 'L' => '墱',
+ 'M' => '墠',
+ 'N' => '墣',
+ 'O' => '墯',
+ 'P' => '墬',
+ 'Q' => '墥',
+ 'R' => '墡',
+ 'S' => '壿',
+ 'T' => '嫿',
+ 'U' => '嫴',
+ 'V' => '嫽',
+ 'W' => '嫷',
+ 'X' => '嫶',
+ 'Y' => '嬃',
+ 'Z' => '嫸',
+ '[' => '嬂',
+ '\\' => '嫹',
+ ']' => '嬁',
+ '^' => '嬇',
+ '_' => '嬅',
+ '`' => '嬏',
+ 'a' => '屧',
+ 'b' => '嶙',
+ 'c' => '嶗',
+ 'd' => '嶟',
+ 'e' => '嶒',
+ 'f' => '嶢',
+ 'g' => '嶓',
+ 'h' => '嶕',
+ 'i' => '嶠',
+ 'j' => '嶜',
+ 'k' => '嶡',
+ 'l' => '嶚',
+ 'm' => '嶞',
+ 'n' => '幩',
+ 'o' => '幝',
+ 'p' => '幠',
+ 'q' => '幜',
+ 'r' => '緳',
+ 's' => '廛',
+ 't' => '廞',
+ 'u' => '廡',
+ 'v' => '彉',
+ 'w' => '徲',
+ 'x' => '憋',
+ 'y' => '憃',
+ 'z' => '慹',
+ '{' => '憱',
+ '|' => '憰',
+ '}' => '憢',
+ '~' => '憉',
+ '' => '憛',
+ '' => '憓',
+ '' => '憯',
+ '' => '憭',
+ '' => '憟',
+ '' => '憒',
+ '' => '憪',
+ '' => '憡',
+ '' => '憍',
+ '' => '慦',
+ '' => '憳',
+ '' => '戭',
+ '' => '摮',
+ '' => '摰',
+ '' => '撖',
+ '' => '撠',
+ '' => '撅',
+ '' => '撗',
+ '' => '撜',
+ '' => '撏',
+ '' => '撋',
+ '' => '撊',
+ '' => '撌',
+ '' => '撣',
+ '' => '撟',
+ '' => '摨',
+ '' => '撱',
+ '' => '撘',
+ '' => '敶',
+ '' => '敺',
+ '' => '敹',
+ '' => '敻',
+ '' => '斲',
+ '' => '斳',
+ '' => '暵',
+ '' => '暰',
+ '' => '暩',
+ '' => '暲',
+ '' => '暷',
+ '' => '暪',
+ '' => '暯',
+ '' => '樀',
+ '' => '樆',
+ '' => '樗',
+ '' => '槥',
+ '' => '槸',
+ '' => '樕',
+ '' => '槱',
+ '' => '槤',
+ '' => '樠',
+ '' => '槿',
+ '' => '槬',
+ '' => '槢',
+ '' => '樛',
+ '' => '樝',
+ '' => '槾',
+ '' => '樧',
+ '' => '槲',
+ '' => '槮',
+ '' => '樔',
+ '' => '槷',
+ '' => '槧',
+ '' => '橀',
+ '' => '樈',
+ '' => '槦',
+ '' => '槻',
+ '' => '樍',
+ '' => '槼',
+ '' => '槫',
+ '' => '樉',
+ '' => '樄',
+ '' => '樘',
+ '' => '樥',
+ '' => '樏',
+ '' => '槶',
+ '' => '樦',
+ '' => '樇',
+ '' => '槴',
+ '' => '樖',
+ '' => '歑',
+ '' => '殥',
+ '' => '殣',
+ '' => '殢',
+ '' => '殦',
+ '' => '氁',
+ '' => '氀',
+ '' => '毿',
+ '' => '氂',
+ '' => '潁',
+ '' => '漦',
+ '' => '潾',
+ '' => '澇',
+ '' => '濆',
+ '' => '澒',
+ '@' => '澍',
+ 'A' => '澉',
+ 'B' => '澌',
+ 'C' => '潢',
+ 'D' => '潏',
+ 'E' => '澅',
+ 'F' => '潚',
+ 'G' => '澖',
+ 'H' => '潶',
+ 'I' => '潬',
+ 'J' => '澂',
+ 'K' => '潕',
+ 'L' => '潲',
+ 'M' => '潒',
+ 'N' => '潐',
+ 'O' => '潗',
+ 'P' => '澔',
+ 'Q' => '澓',
+ 'R' => '潝',
+ 'S' => '漀',
+ 'T' => '潡',
+ 'U' => '潫',
+ 'V' => '潽',
+ 'W' => '潧',
+ 'X' => '澐',
+ 'Y' => '潓',
+ 'Z' => '澋',
+ '[' => '潩',
+ '\\' => '潿',
+ ']' => '澕',
+ '^' => '潣',
+ '_' => '潷',
+ '`' => '潪',
+ 'a' => '潻',
+ 'b' => '熲',
+ 'c' => '熯',
+ 'd' => '熛',
+ 'e' => '熰',
+ 'f' => '熠',
+ 'g' => '熚',
+ 'h' => '熩',
+ 'i' => '熵',
+ 'j' => '熝',
+ 'k' => '熥',
+ 'l' => '熞',
+ 'm' => '熤',
+ 'n' => '熡',
+ 'o' => '熪',
+ 'p' => '熜',
+ 'q' => '熧',
+ 'r' => '熳',
+ 's' => '犘',
+ 't' => '犚',
+ 'u' => '獘',
+ 'v' => '獒',
+ 'w' => '獞',
+ 'x' => '獟',
+ 'y' => '獠',
+ 'z' => '獝',
+ '{' => '獛',
+ '|' => '獡',
+ '}' => '獚',
+ '~' => '獙',
+ '' => '獢',
+ '' => '璇',
+ '' => '璉',
+ '' => '璊',
+ '' => '璆',
+ '' => '璁',
+ '' => '瑽',
+ '' => '璅',
+ '' => '璈',
+ '' => '瑼',
+ '' => '瑹',
+ '' => '甈',
+ '' => '甇',
+ '' => '畾',
+ '' => '瘥',
+ '' => '瘞',
+ '' => '瘙',
+ '' => '瘝',
+ '' => '瘜',
+ '' => '瘣',
+ '' => '瘚',
+ '' => '瘨',
+ '' => '瘛',
+ '' => '皜',
+ '' => '皝',
+ '' => '皞',
+ '' => '皛',
+ '' => '瞍',
+ '' => '瞏',
+ '' => '瞉',
+ '' => '瞈',
+ '' => '磍',
+ '' => '碻',
+ '' => '磏',
+ '' => '磌',
+ '' => '磑',
+ '' => '磎',
+ '' => '磔',
+ '' => '磈',
+ '' => '磃',
+ '' => '磄',
+ '' => '磉',
+ '' => '禚',
+ '' => '禡',
+ '' => '禠',
+ '' => '禜',
+ '' => '禢',
+ '' => '禛',
+ '' => '歶',
+ '' => '稹',
+ '' => '窲',
+ '' => '窴',
+ '' => '窳',
+ '' => '箷',
+ '' => '篋',
+ '' => '箾',
+ '' => '箬',
+ '' => '篎',
+ '' => '箯',
+ '' => '箹',
+ '' => '篊',
+ '' => '箵',
+ '' => '糅',
+ '' => '糈',
+ '' => '糌',
+ '' => '糋',
+ '' => '緷',
+ '' => '緛',
+ '' => '緪',
+ '' => '緧',
+ '' => '緗',
+ '' => '緡',
+ '' => '縃',
+ '' => '緺',
+ '' => '緦',
+ '' => '緶',
+ '' => '緱',
+ '' => '緰',
+ '' => '緮',
+ '' => '緟',
+ '' => '罶',
+ '' => '羬',
+ '' => '羰',
+ '' => '羭',
+ '' => '翭',
+ '' => '翫',
+ '' => '翪',
+ '' => '翬',
+ '' => '翦',
+ '' => '翨',
+ '' => '聤',
+ '' => '聧',
+ '' => '膣',
+ '' => '膟',
+ '@' => '膞',
+ 'A' => '膕',
+ 'B' => '膢',
+ 'C' => '膙',
+ 'D' => '膗',
+ 'E' => '舖',
+ 'F' => '艏',
+ 'G' => '艓',
+ 'H' => '艒',
+ 'I' => '艐',
+ 'J' => '艎',
+ 'K' => '艑',
+ 'L' => '蔤',
+ 'M' => '蔻',
+ 'N' => '蔏',
+ 'O' => '蔀',
+ 'P' => '蔩',
+ 'Q' => '蔎',
+ 'R' => '蔉',
+ 'S' => '蔍',
+ 'T' => '蔟',
+ 'U' => '蔊',
+ 'V' => '蔧',
+ 'W' => '蔜',
+ 'X' => '蓻',
+ 'Y' => '蔫',
+ 'Z' => '蓺',
+ '[' => '蔈',
+ '\\' => '蔌',
+ ']' => '蓴',
+ '^' => '蔪',
+ '_' => '蓲',
+ '`' => '蔕',
+ 'a' => '蓷',
+ 'b' => '蓫',
+ 'c' => '蓳',
+ 'd' => '蓼',
+ 'e' => '蔒',
+ 'f' => '蓪',
+ 'g' => '蓩',
+ 'h' => '蔖',
+ 'i' => '蓾',
+ 'j' => '蔨',
+ 'k' => '蔝',
+ 'l' => '蔮',
+ 'm' => '蔂',
+ 'n' => '蓽',
+ 'o' => '蔞',
+ 'p' => '蓶',
+ 'q' => '蔱',
+ 'r' => '蔦',
+ 's' => '蓧',
+ 't' => '蓨',
+ 'u' => '蓰',
+ 'v' => '蓯',
+ 'w' => '蓹',
+ 'x' => '蔘',
+ 'y' => '蔠',
+ 'z' => '蔰',
+ '{' => '蔋',
+ '|' => '蔙',
+ '}' => '蔯',
+ '~' => '虢',
+ '' => '蝖',
+ '' => '蝣',
+ '' => '蝤',
+ '' => '蝷',
+ '' => '蟡',
+ '' => '蝳',
+ '' => '蝘',
+ '' => '蝔',
+ '' => '蝛',
+ '' => '蝒',
+ '' => '蝡',
+ '' => '蝚',
+ '' => '蝑',
+ '' => '蝞',
+ '' => '蝭',
+ '' => '蝪',
+ '' => '蝐',
+ '' => '蝎',
+ '' => '蝟',
+ '' => '蝝',
+ '' => '蝯',
+ '' => '蝬',
+ '' => '蝺',
+ '' => '蝮',
+ '' => '蝜',
+ '' => '蝥',
+ '' => '蝏',
+ '' => '蝻',
+ '' => '蝵',
+ '' => '蝢',
+ '' => '蝧',
+ '' => '蝩',
+ '' => '衚',
+ '' => '褅',
+ '' => '褌',
+ '' => '褔',
+ '' => '褋',
+ '' => '褗',
+ '' => '褘',
+ '' => '褙',
+ '' => '褆',
+ '' => '褖',
+ '' => '褑',
+ '' => '褎',
+ '' => '褉',
+ '' => '覢',
+ '' => '覤',
+ '' => '覣',
+ '' => '觭',
+ '' => '觰',
+ '' => '觬',
+ '' => '諏',
+ '' => '諆',
+ '' => '誸',
+ '' => '諓',
+ '' => '諑',
+ '' => '諔',
+ '' => '諕',
+ '' => '誻',
+ '' => '諗',
+ '' => '誾',
+ '' => '諀',
+ '' => '諅',
+ '' => '諘',
+ '' => '諃',
+ '' => '誺',
+ '' => '誽',
+ '' => '諙',
+ '' => '谾',
+ '' => '豍',
+ '' => '貏',
+ '' => '賥',
+ '' => '賟',
+ '' => '賙',
+ '' => '賨',
+ '' => '賚',
+ '' => '賝',
+ '' => '賧',
+ '' => '趠',
+ '' => '趜',
+ '' => '趡',
+ '' => '趛',
+ '' => '踠',
+ '' => '踣',
+ '' => '踥',
+ '' => '踤',
+ '' => '踮',
+ '' => '踕',
+ '' => '踛',
+ '' => '踖',
+ '' => '踑',
+ '' => '踙',
+ '' => '踦',
+ '' => '踧',
+ '@' => '踔',
+ 'A' => '踒',
+ 'B' => '踘',
+ 'C' => '踓',
+ 'D' => '踜',
+ 'E' => '踗',
+ 'F' => '踚',
+ 'G' => '輬',
+ 'H' => '輤',
+ 'I' => '輘',
+ 'J' => '輚',
+ 'K' => '輠',
+ 'L' => '輣',
+ 'M' => '輖',
+ 'N' => '輗',
+ 'O' => '遳',
+ 'P' => '遰',
+ 'Q' => '遯',
+ 'R' => '遧',
+ 'S' => '遫',
+ 'T' => '鄯',
+ 'U' => '鄫',
+ 'V' => '鄩',
+ 'W' => '鄪',
+ 'X' => '鄲',
+ 'Y' => '鄦',
+ 'Z' => '鄮',
+ '[' => '醅',
+ '\\' => '醆',
+ ']' => '醊',
+ '^' => '醁',
+ '_' => '醂',
+ '`' => '醄',
+ 'a' => '醀',
+ 'b' => '鋐',
+ 'c' => '鋃',
+ 'd' => '鋄',
+ 'e' => '鋀',
+ 'f' => '鋙',
+ 'g' => '銶',
+ 'h' => '鋏',
+ 'i' => '鋱',
+ 'j' => '鋟',
+ 'k' => '鋘',
+ 'l' => '鋩',
+ 'm' => '鋗',
+ 'n' => '鋝',
+ 'o' => '鋌',
+ 'p' => '鋯',
+ 'q' => '鋂',
+ 'r' => '鋨',
+ 's' => '鋊',
+ 't' => '鋈',
+ 'u' => '鋎',
+ 'v' => '鋦',
+ 'w' => '鋍',
+ 'x' => '鋕',
+ 'y' => '鋉',
+ 'z' => '鋠',
+ '{' => '鋞',
+ '|' => '鋧',
+ '}' => '鋑',
+ '~' => '鋓',
+ '' => '銵',
+ '' => '鋡',
+ '' => '鋆',
+ '' => '銴',
+ '' => '镼',
+ '' => '閬',
+ '' => '閫',
+ '' => '閮',
+ '' => '閰',
+ '' => '隤',
+ '' => '隢',
+ '' => '雓',
+ '' => '霅',
+ '' => '霈',
+ '' => '霂',
+ '' => '靚',
+ '' => '鞊',
+ '' => '鞎',
+ '' => '鞈',
+ '' => '韐',
+ '' => '韏',
+ '' => '頞',
+ '' => '頝',
+ '' => '頦',
+ '' => '頩',
+ '' => '頨',
+ '' => '頠',
+ '' => '頛',
+ '' => '頧',
+ '' => '颲',
+ '' => '餈',
+ '' => '飺',
+ '' => '餑',
+ '' => '餔',
+ '' => '餖',
+ '' => '餗',
+ '' => '餕',
+ '' => '駜',
+ '' => '駍',
+ '' => '駏',
+ '' => '駓',
+ '' => '駔',
+ '' => '駎',
+ '' => '駉',
+ '' => '駖',
+ '' => '駘',
+ '' => '駋',
+ '' => '駗',
+ '' => '駌',
+ '' => '骳',
+ '' => '髬',
+ '' => '髫',
+ '' => '髳',
+ '' => '髲',
+ '' => '髱',
+ '' => '魆',
+ '' => '魃',
+ '' => '魧',
+ '' => '魴',
+ '' => '魱',
+ '' => '魦',
+ '' => '魶',
+ '' => '魵',
+ '' => '魰',
+ '' => '魨',
+ '' => '魤',
+ '' => '魬',
+ '' => '鳼',
+ '' => '鳺',
+ '' => '鳽',
+ '' => '鳿',
+ '' => '鳷',
+ '' => '鴇',
+ '' => '鴀',
+ '' => '鳹',
+ '' => '鳻',
+ '' => '鴈',
+ '' => '鴅',
+ '' => '鴄',
+ '' => '麃',
+ '' => '黓',
+ '' => '鼏',
+ '' => '鼐',
+ '' => '儜',
+ '' => '儓',
+ '' => '儗',
+ '' => '儚',
+ '' => '儑',
+ '' => '凞',
+ '' => '匴',
+ '' => '叡',
+ '' => '噰',
+ '' => '噠',
+ '' => '噮',
+ '@' => '噳',
+ 'A' => '噦',
+ 'B' => '噣',
+ 'C' => '噭',
+ 'D' => '噲',
+ 'E' => '噞',
+ 'F' => '噷',
+ 'G' => '圜',
+ 'H' => '圛',
+ 'I' => '壈',
+ 'J' => '墽',
+ 'K' => '壉',
+ 'L' => '墿',
+ 'M' => '墺',
+ 'N' => '壂',
+ 'O' => '墼',
+ 'P' => '壆',
+ 'Q' => '嬗',
+ 'R' => '嬙',
+ 'S' => '嬛',
+ 'T' => '嬡',
+ 'U' => '嬔',
+ 'V' => '嬓',
+ 'W' => '嬐',
+ 'X' => '嬖',
+ 'Y' => '嬨',
+ 'Z' => '嬚',
+ '[' => '嬠',
+ '\\' => '嬞',
+ ']' => '寯',
+ '^' => '嶬',
+ '_' => '嶱',
+ '`' => '嶩',
+ 'a' => '嶧',
+ 'b' => '嶵',
+ 'c' => '嶰',
+ 'd' => '嶮',
+ 'e' => '嶪',
+ 'f' => '嶨',
+ 'g' => '嶲',
+ 'h' => '嶭',
+ 'i' => '嶯',
+ 'j' => '嶴',
+ 'k' => '幧',
+ 'l' => '幨',
+ 'm' => '幦',
+ 'n' => '幯',
+ 'o' => '廩',
+ 'p' => '廧',
+ 'q' => '廦',
+ 'r' => '廨',
+ 's' => '廥',
+ 't' => '彋',
+ 'u' => '徼',
+ 'v' => '憝',
+ 'w' => '憨',
+ 'x' => '憖',
+ 'y' => '懅',
+ 'z' => '憴',
+ '{' => '懆',
+ '|' => '懁',
+ '}' => '懌',
+ '~' => '憺',
+ '' => '憿',
+ '' => '憸',
+ '' => '憌',
+ '' => '擗',
+ '' => '擖',
+ '' => '擐',
+ '' => '擏',
+ '' => '擉',
+ '' => '撽',
+ '' => '撉',
+ '' => '擃',
+ '' => '擛',
+ '' => '擳',
+ '' => '擙',
+ '' => '攳',
+ '' => '敿',
+ '' => '敼',
+ '' => '斢',
+ '' => '曈',
+ '' => '暾',
+ '' => '曀',
+ '' => '曊',
+ '' => '曋',
+ '' => '曏',
+ '' => '暽',
+ '' => '暻',
+ '' => '暺',
+ '' => '曌',
+ '' => '朣',
+ '' => '樴',
+ '' => '橦',
+ '' => '橉',
+ '' => '橧',
+ '' => '樲',
+ '' => '橨',
+ '' => '樾',
+ '' => '橝',
+ '' => '橭',
+ '' => '橶',
+ '' => '橛',
+ '' => '橑',
+ '' => '樨',
+ '' => '橚',
+ '' => '樻',
+ '' => '樿',
+ '' => '橁',
+ '' => '橪',
+ '' => '橤',
+ '' => '橐',
+ '' => '橏',
+ '' => '橔',
+ '' => '橯',
+ '' => '橩',
+ '' => '橠',
+ '' => '樼',
+ '' => '橞',
+ '' => '橖',
+ '' => '橕',
+ '' => '橍',
+ '' => '橎',
+ '' => '橆',
+ '' => '歕',
+ '' => '歔',
+ '' => '歖',
+ '' => '殧',
+ '' => '殪',
+ '' => '殫',
+ '' => '毈',
+ '' => '毇',
+ '' => '氄',
+ '' => '氃',
+ '' => '氆',
+ '' => '澭',
+ '' => '濋',
+ '' => '澣',
+ '' => '濇',
+ '' => '澼',
+ '' => '濎',
+ '' => '濈',
+ '' => '潞',
+ '' => '濄',
+ '' => '澽',
+ '' => '澞',
+ '' => '濊',
+ '' => '澨',
+ '' => '瀄',
+ '' => '澥',
+ '' => '澮',
+ '' => '澺',
+ '' => '澬',
+ '' => '澪',
+ '' => '濏',
+ '' => '澿',
+ '' => '澸',
+ '@' => '澢',
+ 'A' => '濉',
+ 'B' => '澫',
+ 'C' => '濍',
+ 'D' => '澯',
+ 'E' => '澲',
+ 'F' => '澰',
+ 'G' => '燅',
+ 'H' => '燂',
+ 'I' => '熿',
+ 'J' => '熸',
+ 'K' => '燖',
+ 'L' => '燀',
+ 'M' => '燁',
+ 'N' => '燋',
+ 'O' => '燔',
+ 'P' => '燊',
+ 'Q' => '燇',
+ 'R' => '燏',
+ 'S' => '熽',
+ 'T' => '燘',
+ 'U' => '熼',
+ 'V' => '燆',
+ 'W' => '燚',
+ 'X' => '燛',
+ 'Y' => '犝',
+ 'Z' => '犞',
+ '[' => '獩',
+ '\\' => '獦',
+ ']' => '獧',
+ '^' => '獬',
+ '_' => '獥',
+ '`' => '獫',
+ 'a' => '獪',
+ 'b' => '瑿',
+ 'c' => '璚',
+ 'd' => '璠',
+ 'e' => '璔',
+ 'f' => '璒',
+ 'g' => '璕',
+ 'h' => '璡',
+ 'i' => '甋',
+ 'j' => '疀',
+ 'k' => '瘯',
+ 'l' => '瘭',
+ 'm' => '瘱',
+ 'n' => '瘽',
+ 'o' => '瘳',
+ 'p' => '瘼',
+ 'q' => '瘵',
+ 'r' => '瘲',
+ 's' => '瘰',
+ 't' => '皻',
+ 'u' => '盦',
+ 'v' => '瞚',
+ 'w' => '瞝',
+ 'x' => '瞡',
+ 'y' => '瞜',
+ 'z' => '瞛',
+ '{' => '瞢',
+ '|' => '瞣',
+ '}' => '瞕',
+ '~' => '瞙',
+ '' => '瞗',
+ '' => '磝',
+ '' => '磩',
+ '' => '磥',
+ '' => '磪',
+ '' => '磞',
+ '' => '磣',
+ '' => '磛',
+ '' => '磡',
+ '' => '磢',
+ '' => '磭',
+ '' => '磟',
+ '' => '磠',
+ '' => '禤',
+ '' => '穄',
+ '' => '穈',
+ '' => '穇',
+ '' => '窶',
+ '' => '窸',
+ '' => '窵',
+ '' => '窱',
+ '' => '窷',
+ '' => '篞',
+ '' => '篣',
+ '' => '篧',
+ '' => '篝',
+ '' => '篕',
+ '' => '篥',
+ '' => '篚',
+ '' => '篨',
+ '' => '篹',
+ '' => '篔',
+ '' => '篪',
+ '' => '篢',
+ '' => '篜',
+ '' => '篫',
+ '' => '篘',
+ '' => '篟',
+ '' => '糒',
+ '' => '糔',
+ '' => '糗',
+ '' => '糐',
+ '' => '糑',
+ '' => '縒',
+ '' => '縡',
+ '' => '縗',
+ '' => '縌',
+ '' => '縟',
+ '' => '縠',
+ '' => '縓',
+ '' => '縎',
+ '' => '縜',
+ '' => '縕',
+ '' => '縚',
+ '' => '縢',
+ '' => '縋',
+ '' => '縏',
+ '' => '縖',
+ '' => '縍',
+ '' => '縔',
+ '' => '縥',
+ '' => '縤',
+ '' => '罃',
+ '' => '罻',
+ '' => '罼',
+ '' => '罺',
+ '' => '羱',
+ '' => '翯',
+ '' => '耪',
+ '' => '耩',
+ '' => '聬',
+ '' => '膱',
+ '' => '膦',
+ '' => '膮',
+ '' => '膹',
+ '' => '膵',
+ '' => '膫',
+ '' => '膰',
+ '' => '膬',
+ '' => '膴',
+ '' => '膲',
+ '' => '膷',
+ '' => '膧',
+ '' => '臲',
+ '' => '艕',
+ '' => '艖',
+ '' => '艗',
+ '' => '蕖',
+ '' => '蕅',
+ '' => '蕫',
+ '' => '蕍',
+ '' => '蕓',
+ '' => '蕡',
+ '' => '蕘',
+ '@' => '蕀',
+ 'A' => '蕆',
+ 'B' => '蕤',
+ 'C' => '蕁',
+ 'D' => '蕢',
+ 'E' => '蕄',
+ 'F' => '蕑',
+ 'G' => '蕇',
+ 'H' => '蕣',
+ 'I' => '蔾',
+ 'J' => '蕛',
+ 'K' => '蕱',
+ 'L' => '蕎',
+ 'M' => '蕮',
+ 'N' => '蕵',
+ 'O' => '蕕',
+ 'P' => '蕧',
+ 'Q' => '蕠',
+ 'R' => '薌',
+ 'S' => '蕦',
+ 'T' => '蕝',
+ 'U' => '蕔',
+ 'V' => '蕥',
+ 'W' => '蕬',
+ 'X' => '虣',
+ 'Y' => '虥',
+ 'Z' => '虤',
+ '[' => '螛',
+ '\\' => '螏',
+ ']' => '螗',
+ '^' => '螓',
+ '_' => '螒',
+ '`' => '螈',
+ 'a' => '螁',
+ 'b' => '螖',
+ 'c' => '螘',
+ 'd' => '蝹',
+ 'e' => '螇',
+ 'f' => '螣',
+ 'g' => '螅',
+ 'h' => '螐',
+ 'i' => '螑',
+ 'j' => '螝',
+ 'k' => '螄',
+ 'l' => '螔',
+ 'm' => '螜',
+ 'n' => '螚',
+ 'o' => '螉',
+ 'p' => '褞',
+ 'q' => '褦',
+ 'r' => '褰',
+ 's' => '褭',
+ 't' => '褮',
+ 'u' => '褧',
+ 'v' => '褱',
+ 'w' => '褢',
+ 'x' => '褩',
+ 'y' => '褣',
+ 'z' => '褯',
+ '{' => '褬',
+ '|' => '褟',
+ '}' => '觱',
+ '~' => '諠',
+ '' => '諢',
+ '' => '諲',
+ '' => '諴',
+ '' => '諵',
+ '' => '諝',
+ '' => '謔',
+ '' => '諤',
+ '' => '諟',
+ '' => '諰',
+ '' => '諈',
+ '' => '諞',
+ '' => '諡',
+ '' => '諨',
+ '' => '諿',
+ '' => '諯',
+ '' => '諻',
+ '' => '貑',
+ '' => '貒',
+ '' => '貐',
+ '' => '賵',
+ '' => '賮',
+ '' => '賱',
+ '' => '賰',
+ '' => '賳',
+ '' => '赬',
+ '' => '赮',
+ '' => '趥',
+ '' => '趧',
+ '' => '踳',
+ '' => '踾',
+ '' => '踸',
+ '' => '蹀',
+ '' => '蹅',
+ '' => '踶',
+ '' => '踼',
+ '' => '踽',
+ '' => '蹁',
+ '' => '踰',
+ '' => '踿',
+ '' => '躽',
+ '' => '輶',
+ '' => '輮',
+ '' => '輵',
+ '' => '輲',
+ '' => '輹',
+ '' => '輷',
+ '' => '輴',
+ '' => '遶',
+ '' => '遹',
+ '' => '遻',
+ '' => '邆',
+ '' => '郺',
+ '' => '鄳',
+ '' => '鄵',
+ '' => '鄶',
+ '' => '醓',
+ '' => '醐',
+ '' => '醑',
+ '' => '醍',
+ '' => '醏',
+ '' => '錧',
+ '' => '錞',
+ '' => '錈',
+ '' => '錟',
+ '' => '錆',
+ '' => '錏',
+ '' => '鍺',
+ '' => '錸',
+ '' => '錼',
+ '' => '錛',
+ '' => '錣',
+ '' => '錒',
+ '' => '錁',
+ '' => '鍆',
+ '' => '錭',
+ '' => '錎',
+ '' => '錍',
+ '' => '鋋',
+ '' => '錝',
+ '' => '鋺',
+ '' => '錥',
+ '' => '錓',
+ '' => '鋹',
+ '' => '鋷',
+ '' => '錴',
+ '' => '錂',
+ '' => '錤',
+ '' => '鋿',
+ '' => '錩',
+ '' => '錹',
+ '' => '錵',
+ '' => '錪',
+ '' => '錔',
+ '' => '錌',
+ '@' => '錋',
+ 'A' => '鋾',
+ 'B' => '錉',
+ 'C' => '錀',
+ 'D' => '鋻',
+ 'E' => '錖',
+ 'F' => '閼',
+ 'G' => '闍',
+ 'H' => '閾',
+ 'I' => '閹',
+ 'J' => '閺',
+ 'K' => '閶',
+ 'L' => '閿',
+ 'M' => '閵',
+ 'N' => '閽',
+ 'O' => '隩',
+ 'P' => '雔',
+ 'Q' => '霋',
+ 'R' => '霒',
+ 'S' => '霐',
+ 'T' => '鞙',
+ 'U' => '鞗',
+ 'V' => '鞔',
+ 'W' => '韰',
+ 'X' => '韸',
+ 'Y' => '頵',
+ 'Z' => '頯',
+ '[' => '頲',
+ '\\' => '餤',
+ ']' => '餟',
+ '^' => '餧',
+ '_' => '餩',
+ '`' => '馞',
+ 'a' => '駮',
+ 'b' => '駬',
+ 'c' => '駥',
+ 'd' => '駤',
+ 'e' => '駰',
+ 'f' => '駣',
+ 'g' => '駪',
+ 'h' => '駩',
+ 'i' => '駧',
+ 'j' => '骹',
+ 'k' => '骿',
+ 'l' => '骴',
+ 'm' => '骻',
+ 'n' => '髶',
+ 'o' => '髺',
+ 'p' => '髹',
+ 'q' => '髷',
+ 'r' => '鬳',
+ 's' => '鮀',
+ 't' => '鮅',
+ 'u' => '鮇',
+ 'v' => '魼',
+ 'w' => '魾',
+ 'x' => '魻',
+ 'y' => '鮂',
+ 'z' => '鮓',
+ '{' => '鮒',
+ '|' => '鮐',
+ '}' => '魺',
+ '~' => '鮕',
+ '' => '魽',
+ '' => '鮈',
+ '' => '鴥',
+ '' => '鴗',
+ '' => '鴠',
+ '' => '鴞',
+ '' => '鴔',
+ '' => '鴩',
+ '' => '鴝',
+ '' => '鴘',
+ '' => '鴢',
+ '' => '鴐',
+ '' => '鴙',
+ '' => '鴟',
+ '' => '麈',
+ '' => '麆',
+ '' => '麇',
+ '' => '麮',
+ '' => '麭',
+ '' => '黕',
+ '' => '黖',
+ '' => '黺',
+ '' => '鼒',
+ '' => '鼽',
+ '' => '儦',
+ '' => '儥',
+ '' => '儢',
+ '' => '儤',
+ '' => '儠',
+ '' => '儩',
+ '' => '勴',
+ '' => '嚓',
+ '' => '嚌',
+ '' => '嚍',
+ '' => '嚆',
+ '' => '嚄',
+ '' => '嚃',
+ '' => '噾',
+ '' => '嚂',
+ '' => '噿',
+ '' => '嚁',
+ '' => '壖',
+ '' => '壔',
+ '' => '壏',
+ '' => '壒',
+ '' => '嬭',
+ '' => '嬥',
+ '' => '嬲',
+ '' => '嬣',
+ '' => '嬬',
+ '' => '嬧',
+ '' => '嬦',
+ '' => '嬯',
+ '' => '嬮',
+ '' => '孻',
+ '' => '寱',
+ '' => '寲',
+ '' => '嶷',
+ '' => '幬',
+ '' => '幪',
+ '' => '徾',
+ '' => '徻',
+ '' => '懃',
+ '' => '憵',
+ '' => '憼',
+ '' => '懧',
+ '' => '懠',
+ '' => '懥',
+ '' => '懤',
+ '' => '懨',
+ '' => '懞',
+ '' => '擯',
+ '' => '擩',
+ '' => '擣',
+ '' => '擫',
+ '' => '擤',
+ '' => '擨',
+ '' => '斁',
+ '' => '斀',
+ '' => '斶',
+ '' => '旚',
+ '' => '曒',
+ '' => '檍',
+ '' => '檖',
+ '' => '檁',
+ '' => '檥',
+ '' => '檉',
+ '' => '檟',
+ '' => '檛',
+ '' => '檡',
+ '' => '檞',
+ '' => '檇',
+ '' => '檓',
+ '' => '檎',
+ '@' => '檕',
+ 'A' => '檃',
+ 'B' => '檨',
+ 'C' => '檤',
+ 'D' => '檑',
+ 'E' => '橿',
+ 'F' => '檦',
+ 'G' => '檚',
+ 'H' => '檅',
+ 'I' => '檌',
+ 'J' => '檒',
+ 'K' => '歛',
+ 'L' => '殭',
+ 'M' => '氉',
+ 'N' => '濌',
+ 'O' => '澩',
+ 'P' => '濴',
+ 'Q' => '濔',
+ 'R' => '濣',
+ 'S' => '濜',
+ 'T' => '濭',
+ 'U' => '濧',
+ 'V' => '濦',
+ 'W' => '濞',
+ 'X' => '濲',
+ 'Y' => '濝',
+ 'Z' => '濢',
+ '[' => '濨',
+ '\\' => '燡',
+ ']' => '燱',
+ '^' => '燨',
+ '_' => '燲',
+ '`' => '燤',
+ 'a' => '燰',
+ 'b' => '燢',
+ 'c' => '獳',
+ 'd' => '獮',
+ 'e' => '獯',
+ 'f' => '璗',
+ 'g' => '璲',
+ 'h' => '璫',
+ 'i' => '璐',
+ 'j' => '璪',
+ 'k' => '璭',
+ 'l' => '璱',
+ 'm' => '璥',
+ 'n' => '璯',
+ 'o' => '甐',
+ 'p' => '甑',
+ 'q' => '甒',
+ 'r' => '甏',
+ 's' => '疄',
+ 't' => '癃',
+ 'u' => '癈',
+ 'v' => '癉',
+ 'w' => '癇',
+ 'x' => '皤',
+ 'y' => '盩',
+ 'z' => '瞵',
+ '{' => '瞫',
+ '|' => '瞲',
+ '}' => '瞷',
+ '~' => '瞶',
+ '' => '瞴',
+ '' => '瞱',
+ '' => '瞨',
+ '' => '矰',
+ '' => '磳',
+ '' => '磽',
+ '' => '礂',
+ '' => '磻',
+ '' => '磼',
+ '' => '磲',
+ '' => '礅',
+ '' => '磹',
+ '' => '磾',
+ '' => '礄',
+ '' => '禫',
+ '' => '禨',
+ '' => '穜',
+ '' => '穛',
+ '' => '穖',
+ '' => '穘',
+ '' => '穔',
+ '' => '穚',
+ '' => '窾',
+ '' => '竀',
+ '' => '竁',
+ '' => '簅',
+ '' => '簏',
+ '' => '篲',
+ '' => '簀',
+ '' => '篿',
+ '' => '篻',
+ '' => '簎',
+ '' => '篴',
+ '' => '簋',
+ '' => '篳',
+ '' => '簂',
+ '' => '簉',
+ '' => '簃',
+ '' => '簁',
+ '' => '篸',
+ '' => '篽',
+ '' => '簆',
+ '' => '篰',
+ '' => '篱',
+ '' => '簐',
+ '' => '簊',
+ '' => '糨',
+ '' => '縭',
+ '' => '縼',
+ '' => '繂',
+ '' => '縳',
+ '' => '顈',
+ '' => '縸',
+ '' => '縪',
+ '' => '繉',
+ '' => '繀',
+ '' => '繇',
+ '' => '縩',
+ '' => '繌',
+ '' => '縰',
+ '' => '縻',
+ '' => '縶',
+ '' => '繄',
+ '' => '縺',
+ '' => '罅',
+ '' => '罿',
+ '' => '罾',
+ '' => '罽',
+ '' => '翴',
+ '' => '翲',
+ '' => '耬',
+ '' => '膻',
+ '' => '臄',
+ '' => '臌',
+ '' => '臊',
+ '' => '臅',
+ '' => '臇',
+ '' => '膼',
+ '' => '臩',
+ '' => '艛',
+ '' => '艚',
+ '' => '艜',
+ '' => '薃',
+ '' => '薀',
+ '' => '薏',
+ '' => '薧',
+ '' => '薕',
+ '' => '薠',
+ '' => '薋',
+ '' => '薣',
+ '' => '蕻',
+ '' => '薤',
+ '' => '薚',
+ '' => '薞',
+ '@' => '蕷',
+ 'A' => '蕼',
+ 'B' => '薉',
+ 'C' => '薡',
+ 'D' => '蕺',
+ 'E' => '蕸',
+ 'F' => '蕗',
+ 'G' => '薎',
+ 'H' => '薖',
+ 'I' => '薆',
+ 'J' => '薍',
+ 'K' => '薙',
+ 'L' => '薝',
+ 'M' => '薁',
+ 'N' => '薢',
+ 'O' => '薂',
+ 'P' => '薈',
+ 'Q' => '薅',
+ 'R' => '蕹',
+ 'S' => '蕶',
+ 'T' => '薘',
+ 'U' => '薐',
+ 'V' => '薟',
+ 'W' => '虨',
+ 'X' => '螾',
+ 'Y' => '螪',
+ 'Z' => '螭',
+ '[' => '蟅',
+ '\\' => '螰',
+ ']' => '螬',
+ '^' => '螹',
+ '_' => '螵',
+ '`' => '螼',
+ 'a' => '螮',
+ 'b' => '蟉',
+ 'c' => '蟃',
+ 'd' => '蟂',
+ 'e' => '蟌',
+ 'f' => '螷',
+ 'g' => '螯',
+ 'h' => '蟄',
+ 'i' => '蟊',
+ 'j' => '螴',
+ 'k' => '螶',
+ 'l' => '螿',
+ 'm' => '螸',
+ 'n' => '螽',
+ 'o' => '蟞',
+ 'p' => '螲',
+ 'q' => '褵',
+ 'r' => '褳',
+ 's' => '褼',
+ 't' => '褾',
+ 'u' => '襁',
+ 'v' => '襒',
+ 'w' => '褷',
+ 'x' => '襂',
+ 'y' => '覭',
+ 'z' => '覯',
+ '{' => '覮',
+ '|' => '觲',
+ '}' => '觳',
+ '~' => '謞',
+ '' => '謘',
+ '' => '謖',
+ '' => '謑',
+ '' => '謅',
+ '' => '謋',
+ '' => '謢',
+ '' => '謏',
+ '' => '謒',
+ '' => '謕',
+ '' => '謇',
+ '' => '謍',
+ '' => '謈',
+ '' => '謆',
+ '' => '謜',
+ '' => '謓',
+ '' => '謚',
+ '' => '豏',
+ '' => '豰',
+ '' => '豲',
+ '' => '豱',
+ '' => '豯',
+ '' => '貕',
+ '' => '貔',
+ '' => '賹',
+ '' => '赯',
+ '' => '蹎',
+ '' => '蹍',
+ '' => '蹓',
+ '' => '蹐',
+ '' => '蹌',
+ '' => '蹇',
+ '' => '轃',
+ '' => '轀',
+ '' => '邅',
+ '' => '遾',
+ '' => '鄸',
+ '' => '醚',
+ '' => '醢',
+ '' => '醛',
+ '' => '醙',
+ '' => '醟',
+ '' => '醡',
+ '' => '醝',
+ '' => '醠',
+ '' => '鎡',
+ '' => '鎃',
+ '' => '鎯',
+ '' => '鍤',
+ '' => '鍖',
+ '' => '鍇',
+ '' => '鍼',
+ '' => '鍘',
+ '' => '鍜',
+ '' => '鍶',
+ '' => '鍉',
+ '' => '鍐',
+ '' => '鍑',
+ '' => '鍠',
+ '' => '鍭',
+ '' => '鎏',
+ '' => '鍌',
+ '' => '鍪',
+ '' => '鍹',
+ '' => '鍗',
+ '' => '鍕',
+ '' => '鍒',
+ '' => '鍏',
+ '' => '鍱',
+ '' => '鍷',
+ '' => '鍻',
+ '' => '鍡',
+ '' => '鍞',
+ '' => '鍣',
+ '' => '鍧',
+ '' => '鎀',
+ '' => '鍎',
+ '' => '鍙',
+ '' => '闇',
+ '' => '闀',
+ '' => '闉',
+ '' => '闃',
+ '' => '闅',
+ '' => '閷',
+ '' => '隮',
+ '' => '隰',
+ '' => '隬',
+ '' => '霠',
+ '' => '霟',
+ '' => '霘',
+ '' => '霝',
+ '' => '霙',
+ '' => '鞚',
+ '' => '鞡',
+ '' => '鞜',
+ '@' => '鞞',
+ 'A' => '鞝',
+ 'B' => '韕',
+ 'C' => '韔',
+ 'D' => '韱',
+ 'E' => '顁',
+ 'F' => '顄',
+ 'G' => '顊',
+ 'H' => '顉',
+ 'I' => '顅',
+ 'J' => '顃',
+ 'K' => '餥',
+ 'L' => '餫',
+ 'M' => '餬',
+ 'N' => '餪',
+ 'O' => '餳',
+ 'P' => '餲',
+ 'Q' => '餯',
+ 'R' => '餭',
+ 'S' => '餱',
+ 'T' => '餰',
+ 'U' => '馘',
+ 'V' => '馣',
+ 'W' => '馡',
+ 'X' => '騂',
+ 'Y' => '駺',
+ 'Z' => '駴',
+ '[' => '駷',
+ '\\' => '駹',
+ ']' => '駸',
+ '^' => '駶',
+ '_' => '駻',
+ '`' => '駽',
+ 'a' => '駾',
+ 'b' => '駼',
+ 'c' => '騃',
+ 'd' => '骾',
+ 'e' => '髾',
+ 'f' => '髽',
+ 'g' => '鬁',
+ 'h' => '髼',
+ 'i' => '魈',
+ 'j' => '鮚',
+ 'k' => '鮨',
+ 'l' => '鮞',
+ 'm' => '鮛',
+ 'n' => '鮦',
+ 'o' => '鮡',
+ 'p' => '鮥',
+ 'q' => '鮤',
+ 'r' => '鮆',
+ 's' => '鮢',
+ 't' => '鮠',
+ 'u' => '鮯',
+ 'v' => '鴳',
+ 'w' => '鵁',
+ 'x' => '鵧',
+ 'y' => '鴶',
+ 'z' => '鴮',
+ '{' => '鴯',
+ '|' => '鴱',
+ '}' => '鴸',
+ '~' => '鴰',
+ '' => '鵅',
+ '' => '鵂',
+ '' => '鵃',
+ '' => '鴾',
+ '' => '鴷',
+ '' => '鵀',
+ '' => '鴽',
+ '' => '翵',
+ '' => '鴭',
+ '' => '麊',
+ '' => '麉',
+ '' => '麍',
+ '' => '麰',
+ '' => '黈',
+ '' => '黚',
+ '' => '黻',
+ '' => '黿',
+ '' => '鼤',
+ '' => '鼣',
+ '' => '鼢',
+ '' => '齔',
+ '' => '龠',
+ '' => '儱',
+ '' => '儭',
+ '' => '儮',
+ '' => '嚘',
+ '' => '嚜',
+ '' => '嚗',
+ '' => '嚚',
+ '' => '嚝',
+ '' => '嚙',
+ '' => '奰',
+ '' => '嬼',
+ '' => '屩',
+ '' => '屪',
+ '' => '巀',
+ '' => '幭',
+ '' => '幮',
+ '' => '懘',
+ '' => '懟',
+ '' => '懭',
+ '' => '懮',
+ '' => '懱',
+ '' => '懪',
+ '' => '懰',
+ '' => '懫',
+ '' => '懖',
+ '' => '懩',
+ '' => '擿',
+ '' => '攄',
+ '' => '擽',
+ '' => '擸',
+ '' => '攁',
+ '' => '攃',
+ '' => '擼',
+ '' => '斔',
+ '' => '旛',
+ '' => '曚',
+ '' => '曛',
+ '' => '曘',
+ '' => '櫅',
+ '' => '檹',
+ '' => '檽',
+ '' => '櫡',
+ '' => '櫆',
+ '' => '檺',
+ '' => '檶',
+ '' => '檷',
+ '' => '櫇',
+ '' => '檴',
+ '' => '檭',
+ '' => '歞',
+ '' => '毉',
+ '' => '氋',
+ '' => '瀇',
+ '' => '瀌',
+ '' => '瀍',
+ '' => '瀁',
+ '' => '瀅',
+ '' => '瀔',
+ '' => '瀎',
+ '' => '濿',
+ '' => '瀀',
+ '' => '濻',
+ '' => '瀦',
+ '' => '濼',
+ '' => '濷',
+ '' => '瀊',
+ '' => '爁',
+ '' => '燿',
+ '' => '燹',
+ '' => '爃',
+ '' => '燽',
+ '' => '獶',
+ '@' => '璸',
+ 'A' => '瓀',
+ 'B' => '璵',
+ 'C' => '瓁',
+ 'D' => '璾',
+ 'E' => '璶',
+ 'F' => '璻',
+ 'G' => '瓂',
+ 'H' => '甔',
+ 'I' => '甓',
+ 'J' => '癜',
+ 'K' => '癤',
+ 'L' => '癙',
+ 'M' => '癐',
+ 'N' => '癓',
+ 'O' => '癗',
+ 'P' => '癚',
+ 'Q' => '皦',
+ 'R' => '皽',
+ 'S' => '盬',
+ 'T' => '矂',
+ 'U' => '瞺',
+ 'V' => '磿',
+ 'W' => '礌',
+ 'X' => '礓',
+ 'Y' => '礔',
+ 'Z' => '礉',
+ '[' => '礐',
+ '\\' => '礒',
+ ']' => '礑',
+ '^' => '禭',
+ '_' => '禬',
+ '`' => '穟',
+ 'a' => '簜',
+ 'b' => '簩',
+ 'c' => '簙',
+ 'd' => '簠',
+ 'e' => '簟',
+ 'f' => '簭',
+ 'g' => '簝',
+ 'h' => '簦',
+ 'i' => '簨',
+ 'j' => '簢',
+ 'k' => '簥',
+ 'l' => '簰',
+ 'm' => '繜',
+ 'n' => '繐',
+ 'o' => '繖',
+ 'p' => '繣',
+ 'q' => '繘',
+ 'r' => '繢',
+ 's' => '繟',
+ 't' => '繑',
+ 'u' => '繠',
+ 'v' => '繗',
+ 'w' => '繓',
+ 'x' => '羵',
+ 'y' => '羳',
+ 'z' => '翷',
+ '{' => '翸',
+ '|' => '聵',
+ '}' => '臑',
+ '~' => '臒',
+ '' => '臐',
+ '' => '艟',
+ '' => '艞',
+ '' => '薴',
+ '' => '藆',
+ '' => '藀',
+ '' => '藃',
+ '' => '藂',
+ '' => '薳',
+ '' => '薵',
+ '' => '薽',
+ '' => '藇',
+ '' => '藄',
+ '' => '薿',
+ '' => '藋',
+ '' => '藎',
+ '' => '藈',
+ '' => '藅',
+ '' => '薱',
+ '' => '薶',
+ '' => '藒',
+ '' => '蘤',
+ '' => '薸',
+ '' => '薷',
+ '' => '薾',
+ '' => '虩',
+ '' => '蟧',
+ '' => '蟦',
+ '' => '蟢',
+ '' => '蟛',
+ '' => '蟫',
+ '' => '蟪',
+ '' => '蟥',
+ '' => '蟟',
+ '' => '蟳',
+ '' => '蟤',
+ '' => '蟔',
+ '' => '蟜',
+ '' => '蟓',
+ '' => '蟭',
+ '' => '蟘',
+ '' => '蟣',
+ '' => '螤',
+ '' => '蟗',
+ '' => '蟙',
+ '' => '蠁',
+ '' => '蟴',
+ '' => '蟨',
+ '' => '蟝',
+ '' => '襓',
+ '' => '襋',
+ '' => '襏',
+ '' => '襌',
+ '' => '襆',
+ '' => '襐',
+ '' => '襑',
+ '' => '襉',
+ '' => '謪',
+ '' => '謧',
+ '' => '謣',
+ '' => '謳',
+ '' => '謰',
+ '' => '謵',
+ '' => '譇',
+ '' => '謯',
+ '' => '謼',
+ '' => '謾',
+ '' => '謱',
+ '' => '謥',
+ '' => '謷',
+ '' => '謦',
+ '' => '謶',
+ '' => '謮',
+ '' => '謤',
+ '' => '謻',
+ '' => '謽',
+ '' => '謺',
+ '' => '豂',
+ '' => '豵',
+ '' => '貙',
+ '' => '貘',
+ '' => '貗',
+ '' => '賾',
+ '' => '贄',
+ '' => '贂',
+ '' => '贀',
+ '' => '蹜',
+ '' => '蹢',
+ '' => '蹠',
+ '' => '蹗',
+ '' => '蹖',
+ '' => '蹞',
+ '' => '蹥',
+ '' => '蹧',
+ '@' => '蹛',
+ 'A' => '蹚',
+ 'B' => '蹡',
+ 'C' => '蹝',
+ 'D' => '蹩',
+ 'E' => '蹔',
+ 'F' => '轆',
+ 'G' => '轇',
+ 'H' => '轈',
+ 'I' => '轋',
+ 'J' => '鄨',
+ 'K' => '鄺',
+ 'L' => '鄻',
+ 'M' => '鄾',
+ 'N' => '醨',
+ 'O' => '醥',
+ 'P' => '醧',
+ 'Q' => '醯',
+ 'R' => '醪',
+ 'S' => '鎵',
+ 'T' => '鎌',
+ 'U' => '鎒',
+ 'V' => '鎷',
+ 'W' => '鎛',
+ 'X' => '鎝',
+ 'Y' => '鎉',
+ 'Z' => '鎧',
+ '[' => '鎎',
+ '\\' => '鎪',
+ ']' => '鎞',
+ '^' => '鎦',
+ '_' => '鎕',
+ '`' => '鎈',
+ 'a' => '鎙',
+ 'b' => '鎟',
+ 'c' => '鎍',
+ 'd' => '鎱',
+ 'e' => '鎑',
+ 'f' => '鎲',
+ 'g' => '鎤',
+ 'h' => '鎨',
+ 'i' => '鎴',
+ 'j' => '鎣',
+ 'k' => '鎥',
+ 'l' => '闒',
+ 'm' => '闓',
+ 'n' => '闑',
+ 'o' => '隳',
+ 'p' => '雗',
+ 'q' => '雚',
+ 'r' => '巂',
+ 's' => '雟',
+ 't' => '雘',
+ 'u' => '雝',
+ 'v' => '霣',
+ 'w' => '霢',
+ 'x' => '霥',
+ 'y' => '鞬',
+ 'z' => '鞮',
+ '{' => '鞨',
+ '|' => '鞫',
+ '}' => '鞤',
+ '~' => '鞪',
+ '' => '鞢',
+ '' => '鞥',
+ '' => '韗',
+ '' => '韙',
+ '' => '韖',
+ '' => '韘',
+ '' => '韺',
+ '' => '顐',
+ '' => '顑',
+ '' => '顒',
+ '' => '颸',
+ '' => '饁',
+ '' => '餼',
+ '' => '餺',
+ '' => '騏',
+ '' => '騋',
+ '' => '騉',
+ '' => '騍',
+ '' => '騄',
+ '' => '騑',
+ '' => '騊',
+ '' => '騅',
+ '' => '騇',
+ '' => '騆',
+ '' => '髀',
+ '' => '髜',
+ '' => '鬈',
+ '' => '鬄',
+ '' => '鬅',
+ '' => '鬩',
+ '' => '鬵',
+ '' => '魊',
+ '' => '魌',
+ '' => '魋',
+ '' => '鯇',
+ '' => '鯆',
+ '' => '鯃',
+ '' => '鮿',
+ '' => '鯁',
+ '' => '鮵',
+ '' => '鮸',
+ '' => '鯓',
+ '' => '鮶',
+ '' => '鯄',
+ '' => '鮹',
+ '' => '鮽',
+ '' => '鵜',
+ '' => '鵓',
+ '' => '鵏',
+ '' => '鵊',
+ '' => '鵛',
+ '' => '鵋',
+ '' => '鵙',
+ '' => '鵖',
+ '' => '鵌',
+ '' => '鵗',
+ '' => '鵒',
+ '' => '鵔',
+ '' => '鵟',
+ '' => '鵘',
+ '' => '鵚',
+ '' => '麎',
+ '' => '麌',
+ '' => '黟',
+ '' => '鼁',
+ '' => '鼀',
+ '' => '鼖',
+ '' => '鼥',
+ '' => '鼫',
+ '' => '鼪',
+ '' => '鼩',
+ '' => '鼨',
+ '' => '齌',
+ '' => '齕',
+ '' => '儴',
+ '' => '儵',
+ '' => '劖',
+ '' => '勷',
+ '' => '厴',
+ '' => '嚫',
+ '' => '嚭',
+ '' => '嚦',
+ '' => '嚧',
+ '' => '嚪',
+ '' => '嚬',
+ '' => '壚',
+ '' => '壝',
+ '' => '壛',
+ '' => '夒',
+ '' => '嬽',
+ '' => '嬾',
+ '' => '嬿',
+ '' => '巃',
+ '' => '幰',
+ '@' => '徿',
+ 'A' => '懻',
+ 'B' => '攇',
+ 'C' => '攐',
+ 'D' => '攍',
+ 'E' => '攉',
+ 'F' => '攌',
+ 'G' => '攎',
+ 'H' => '斄',
+ 'I' => '旞',
+ 'J' => '旝',
+ 'K' => '曞',
+ 'L' => '櫧',
+ 'M' => '櫠',
+ 'N' => '櫌',
+ 'O' => '櫑',
+ 'P' => '櫙',
+ 'Q' => '櫋',
+ 'R' => '櫟',
+ 'S' => '櫜',
+ 'T' => '櫐',
+ 'U' => '櫫',
+ 'V' => '櫏',
+ 'W' => '櫍',
+ 'X' => '櫞',
+ 'Y' => '歠',
+ 'Z' => '殰',
+ '[' => '氌',
+ '\\' => '瀙',
+ ']' => '瀧',
+ '^' => '瀠',
+ '_' => '瀖',
+ '`' => '瀫',
+ 'a' => '瀡',
+ 'b' => '瀢',
+ 'c' => '瀣',
+ 'd' => '瀩',
+ 'e' => '瀗',
+ 'f' => '瀤',
+ 'g' => '瀜',
+ 'h' => '瀪',
+ 'i' => '爌',
+ 'j' => '爊',
+ 'k' => '爇',
+ 'l' => '爂',
+ 'm' => '爅',
+ 'n' => '犥',
+ 'o' => '犦',
+ 'p' => '犤',
+ 'q' => '犣',
+ 'r' => '犡',
+ 's' => '瓋',
+ 't' => '瓅',
+ 'u' => '璷',
+ 'v' => '瓃',
+ 'w' => '甖',
+ 'x' => '癠',
+ 'y' => '矉',
+ 'z' => '矊',
+ '{' => '矄',
+ '|' => '矱',
+ '}' => '礝',
+ '~' => '礛',
+ '' => '礡',
+ '' => '礜',
+ '' => '礗',
+ '' => '礞',
+ '' => '禰',
+ '' => '穧',
+ '' => '穨',
+ '' => '簳',
+ '' => '簼',
+ '' => '簹',
+ '' => '簬',
+ '' => '簻',
+ '' => '糬',
+ '' => '糪',
+ '' => '繶',
+ '' => '繵',
+ '' => '繸',
+ '' => '繰',
+ '' => '繷',
+ '' => '繯',
+ '' => '繺',
+ '' => '繲',
+ '' => '繴',
+ '' => '繨',
+ '' => '罋',
+ '' => '罊',
+ '' => '羃',
+ '' => '羆',
+ '' => '羷',
+ '' => '翽',
+ '' => '翾',
+ '' => '聸',
+ '' => '臗',
+ '' => '臕',
+ '' => '艤',
+ '' => '艡',
+ '' => '艣',
+ '' => '藫',
+ '' => '藱',
+ '' => '藭',
+ '' => '藙',
+ '' => '藡',
+ '' => '藨',
+ '' => '藚',
+ '' => '藗',
+ '' => '藬',
+ '' => '藲',
+ '' => '藸',
+ '' => '藘',
+ '' => '藟',
+ '' => '藣',
+ '' => '藜',
+ '' => '藑',
+ '' => '藰',
+ '' => '藦',
+ '' => '藯',
+ '' => '藞',
+ '' => '藢',
+ '' => '蠀',
+ '' => '蟺',
+ '' => '蠃',
+ '' => '蟶',
+ '' => '蟷',
+ '' => '蠉',
+ '' => '蠌',
+ '' => '蠋',
+ '' => '蠆',
+ '' => '蟼',
+ '' => '蠈',
+ '' => '蟿',
+ '' => '蠊',
+ '' => '蠂',
+ '' => '襢',
+ '' => '襚',
+ '' => '襛',
+ '' => '襗',
+ '' => '襡',
+ '' => '襜',
+ '' => '襘',
+ '' => '襝',
+ '' => '襙',
+ '' => '覈',
+ '' => '覷',
+ '' => '覶',
+ '' => '觶',
+ '' => '譐',
+ '' => '譈',
+ '' => '譊',
+ '' => '譀',
+ '' => '譓',
+ '' => '譖',
+ '' => '譔',
+ '' => '譋',
+ '' => '譕',
+ '@' => '譑',
+ 'A' => '譂',
+ 'B' => '譒',
+ 'C' => '譗',
+ 'D' => '豃',
+ 'E' => '豷',
+ 'F' => '豶',
+ 'G' => '貚',
+ 'H' => '贆',
+ 'I' => '贇',
+ 'J' => '贉',
+ 'K' => '趬',
+ 'L' => '趪',
+ 'M' => '趭',
+ 'N' => '趫',
+ 'O' => '蹭',
+ 'P' => '蹸',
+ 'Q' => '蹳',
+ 'R' => '蹪',
+ 'S' => '蹯',
+ 'T' => '蹻',
+ 'U' => '軂',
+ 'V' => '轒',
+ 'W' => '轑',
+ 'X' => '轏',
+ 'Y' => '轐',
+ 'Z' => '轓',
+ '[' => '辴',
+ '\\' => '酀',
+ ']' => '鄿',
+ '^' => '醰',
+ '_' => '醭',
+ '`' => '鏞',
+ 'a' => '鏇',
+ 'b' => '鏏',
+ 'c' => '鏂',
+ 'd' => '鏚',
+ 'e' => '鏐',
+ 'f' => '鏹',
+ 'g' => '鏬',
+ 'h' => '鏌',
+ 'i' => '鏙',
+ 'j' => '鎩',
+ 'k' => '鏦',
+ 'l' => '鏊',
+ 'm' => '鏔',
+ 'n' => '鏮',
+ 'o' => '鏣',
+ 'p' => '鏕',
+ 'q' => '鏄',
+ 'r' => '鏎',
+ 's' => '鏀',
+ 't' => '鏒',
+ 'u' => '鏧',
+ 'v' => '镽',
+ 'w' => '闚',
+ 'x' => '闛',
+ 'y' => '雡',
+ 'z' => '霩',
+ '{' => '霫',
+ '|' => '霬',
+ '}' => '霨',
+ '~' => '霦',
+ '' => '鞳',
+ '' => '鞷',
+ '' => '鞶',
+ '' => '韝',
+ '' => '韞',
+ '' => '韟',
+ '' => '顜',
+ '' => '顙',
+ '' => '顝',
+ '' => '顗',
+ '' => '颿',
+ '' => '颽',
+ '' => '颻',
+ '' => '颾',
+ '' => '饈',
+ '' => '饇',
+ '' => '饃',
+ '' => '馦',
+ '' => '馧',
+ '' => '騚',
+ '' => '騕',
+ '' => '騥',
+ '' => '騝',
+ '' => '騤',
+ '' => '騛',
+ '' => '騢',
+ '' => '騠',
+ '' => '騧',
+ '' => '騣',
+ '' => '騞',
+ '' => '騜',
+ '' => '騔',
+ '' => '髂',
+ '' => '鬋',
+ '' => '鬊',
+ '' => '鬎',
+ '' => '鬌',
+ '' => '鬷',
+ '' => '鯪',
+ '' => '鯫',
+ '' => '鯠',
+ '' => '鯞',
+ '' => '鯤',
+ '' => '鯦',
+ '' => '鯢',
+ '' => '鯰',
+ '' => '鯔',
+ '' => '鯗',
+ '' => '鯬',
+ '' => '鯜',
+ '' => '鯙',
+ '' => '鯥',
+ '' => '鯕',
+ '' => '鯡',
+ '' => '鯚',
+ '' => '鵷',
+ '' => '鶁',
+ '' => '鶊',
+ '' => '鶄',
+ '' => '鶈',
+ '' => '鵱',
+ '' => '鶀',
+ '' => '鵸',
+ '' => '鶆',
+ '' => '鶋',
+ '' => '鶌',
+ '' => '鵽',
+ '' => '鵫',
+ '' => '鵴',
+ '' => '鵵',
+ '' => '鵰',
+ '' => '鵩',
+ '' => '鶅',
+ '' => '鵳',
+ '' => '鵻',
+ '' => '鶂',
+ '' => '鵯',
+ '' => '鵹',
+ '' => '鵿',
+ '' => '鶇',
+ '' => '鵨',
+ '' => '麔',
+ '' => '麑',
+ '' => '黀',
+ '' => '黼',
+ '' => '鼭',
+ '' => '齀',
+ '' => '齁',
+ '' => '齍',
+ '' => '齖',
+ '' => '齗',
+ '' => '齘',
+ '' => '匷',
+ '' => '嚲',
+ '@' => '嚵',
+ 'A' => '嚳',
+ 'B' => '壣',
+ 'C' => '孅',
+ 'D' => '巆',
+ 'E' => '巇',
+ 'F' => '廮',
+ 'G' => '廯',
+ 'H' => '忀',
+ 'I' => '忁',
+ 'J' => '懹',
+ 'K' => '攗',
+ 'L' => '攖',
+ 'M' => '攕',
+ 'N' => '攓',
+ 'O' => '旟',
+ 'P' => '曨',
+ 'Q' => '曣',
+ 'R' => '曤',
+ 'S' => '櫳',
+ 'T' => '櫰',
+ 'U' => '櫪',
+ 'V' => '櫨',
+ 'W' => '櫹',
+ 'X' => '櫱',
+ 'Y' => '櫮',
+ 'Z' => '櫯',
+ '[' => '瀼',
+ '\\' => '瀵',
+ ']' => '瀯',
+ '^' => '瀷',
+ '_' => '瀴',
+ '`' => '瀱',
+ 'a' => '灂',
+ 'b' => '瀸',
+ 'c' => '瀿',
+ 'd' => '瀺',
+ 'e' => '瀹',
+ 'f' => '灀',
+ 'g' => '瀻',
+ 'h' => '瀳',
+ 'i' => '灁',
+ 'j' => '爓',
+ 'k' => '爔',
+ 'l' => '犨',
+ 'm' => '獽',
+ 'n' => '獼',
+ 'o' => '璺',
+ 'p' => '皫',
+ 'q' => '皪',
+ 'r' => '皾',
+ 's' => '盭',
+ 't' => '矌',
+ 'u' => '矎',
+ 'v' => '矏',
+ 'w' => '矍',
+ 'x' => '矲',
+ 'y' => '礥',
+ 'z' => '礣',
+ '{' => '礧',
+ '|' => '礨',
+ '}' => '礤',
+ '~' => '礩',
+ '' => '禲',
+ '' => '穮',
+ '' => '穬',
+ '' => '穭',
+ '' => '竷',
+ '' => '籉',
+ '' => '籈',
+ '' => '籊',
+ '' => '籇',
+ '' => '籅',
+ '' => '糮',
+ '' => '繻',
+ '' => '繾',
+ '' => '纁',
+ '' => '纀',
+ '' => '羺',
+ '' => '翿',
+ '' => '聹',
+ '' => '臛',
+ '' => '臙',
+ '' => '舋',
+ '' => '艨',
+ '' => '艩',
+ '' => '蘢',
+ '' => '藿',
+ '' => '蘁',
+ '' => '藾',
+ '' => '蘛',
+ '' => '蘀',
+ '' => '藶',
+ '' => '蘄',
+ '' => '蘉',
+ '' => '蘅',
+ '' => '蘌',
+ '' => '藽',
+ '' => '蠙',
+ '' => '蠐',
+ '' => '蠑',
+ '' => '蠗',
+ '' => '蠓',
+ '' => '蠖',
+ '' => '襣',
+ '' => '襦',
+ '' => '覹',
+ '' => '觷',
+ '' => '譠',
+ '' => '譪',
+ '' => '譝',
+ '' => '譨',
+ '' => '譣',
+ '' => '譥',
+ '' => '譧',
+ '' => '譭',
+ '' => '趮',
+ '' => '躆',
+ '' => '躈',
+ '' => '躄',
+ '' => '轙',
+ '' => '轖',
+ '' => '轗',
+ '' => '轕',
+ '' => '轘',
+ '' => '轚',
+ '' => '邍',
+ '' => '酃',
+ '' => '酁',
+ '' => '醷',
+ '' => '醵',
+ '' => '醲',
+ '' => '醳',
+ '' => '鐋',
+ '' => '鐓',
+ '' => '鏻',
+ '' => '鐠',
+ '' => '鐏',
+ '' => '鐔',
+ '' => '鏾',
+ '' => '鐕',
+ '' => '鐐',
+ '' => '鐨',
+ '' => '鐙',
+ '' => '鐍',
+ '' => '鏵',
+ '' => '鐀',
+ '' => '鏷',
+ '' => '鐇',
+ '' => '鐎',
+ '' => '鐖',
+ '' => '鐒',
+ '' => '鏺',
+ '' => '鐉',
+ '' => '鏸',
+ '' => '鐊',
+ '' => '鏿',
+ '@' => '鏼',
+ 'A' => '鐌',
+ 'B' => '鏶',
+ 'C' => '鐑',
+ 'D' => '鐆',
+ 'E' => '闞',
+ 'F' => '闠',
+ 'G' => '闟',
+ 'H' => '霮',
+ 'I' => '霯',
+ 'J' => '鞹',
+ 'K' => '鞻',
+ 'L' => '韽',
+ 'M' => '韾',
+ 'N' => '顠',
+ 'O' => '顢',
+ 'P' => '顣',
+ 'Q' => '顟',
+ 'R' => '飁',
+ 'S' => '飂',
+ 'T' => '饐',
+ 'U' => '饎',
+ 'V' => '饙',
+ 'W' => '饌',
+ 'X' => '饋',
+ 'Y' => '饓',
+ 'Z' => '騲',
+ '[' => '騴',
+ '\\' => '騱',
+ ']' => '騬',
+ '^' => '騪',
+ '_' => '騶',
+ '`' => '騩',
+ 'a' => '騮',
+ 'b' => '騸',
+ 'c' => '騭',
+ 'd' => '髇',
+ 'e' => '髊',
+ 'f' => '髆',
+ 'g' => '鬐',
+ 'h' => '鬒',
+ 'i' => '鬑',
+ 'j' => '鰋',
+ 'k' => '鰈',
+ 'l' => '鯷',
+ 'm' => '鰅',
+ 'n' => '鰒',
+ 'o' => '鯸',
+ 'p' => '鱀',
+ 'q' => '鰇',
+ 'r' => '鰎',
+ 's' => '鰆',
+ 't' => '鰗',
+ 'u' => '鰔',
+ 'v' => '鰉',
+ 'w' => '鶟',
+ 'x' => '鶙',
+ 'y' => '鶤',
+ 'z' => '鶝',
+ '{' => '鶒',
+ '|' => '鶘',
+ '}' => '鶐',
+ '~' => '鶛',
+ '' => '鶠',
+ '' => '鶔',
+ '' => '鶜',
+ '' => '鶪',
+ '' => '鶗',
+ '' => '鶡',
+ '' => '鶚',
+ '' => '鶢',
+ '' => '鶨',
+ '' => '鶞',
+ '' => '鶣',
+ '' => '鶿',
+ '' => '鶩',
+ '' => '鶖',
+ '' => '鶦',
+ '' => '鶧',
+ '' => '麙',
+ '' => '麛',
+ '' => '麚',
+ '' => '黥',
+ '' => '黤',
+ '' => '黧',
+ '' => '黦',
+ '' => '鼰',
+ '' => '鼮',
+ '' => '齛',
+ '' => '齠',
+ '' => '齞',
+ '' => '齝',
+ '' => '齙',
+ '' => '龑',
+ '' => '儺',
+ '' => '儹',
+ '' => '劘',
+ '' => '劗',
+ '' => '囃',
+ '' => '嚽',
+ '' => '嚾',
+ '' => '孈',
+ '' => '孇',
+ '' => '巋',
+ '' => '巏',
+ '' => '廱',
+ '' => '懽',
+ '' => '攛',
+ '' => '欂',
+ '' => '櫼',
+ '' => '欃',
+ '' => '櫸',
+ '' => '欀',
+ '' => '灃',
+ '' => '灄',
+ '' => '灊',
+ '' => '灈',
+ '' => '灉',
+ '' => '灅',
+ '' => '灆',
+ '' => '爝',
+ '' => '爚',
+ '' => '爙',
+ '' => '獾',
+ '' => '甗',
+ '' => '癪',
+ '' => '矐',
+ '' => '礭',
+ '' => '礱',
+ '' => '礯',
+ '' => '籔',
+ '' => '籓',
+ '' => '糲',
+ '' => '纊',
+ '' => '纇',
+ '' => '纈',
+ '' => '纋',
+ '' => '纆',
+ '' => '纍',
+ '' => '罍',
+ '' => '羻',
+ '' => '耰',
+ '' => '臝',
+ '' => '蘘',
+ '' => '蘪',
+ '' => '蘦',
+ '' => '蘟',
+ '' => '蘣',
+ '' => '蘜',
+ '' => '蘙',
+ '' => '蘧',
+ '' => '蘮',
+ '' => '蘡',
+ '' => '蘠',
+ '' => '蘩',
+ '' => '蘞',
+ '' => '蘥',
+ '@' => '蠩',
+ 'A' => '蠝',
+ 'B' => '蠛',
+ 'C' => '蠠',
+ 'D' => '蠤',
+ 'E' => '蠜',
+ 'F' => '蠫',
+ 'G' => '衊',
+ 'H' => '襭',
+ 'I' => '襩',
+ 'J' => '襮',
+ 'K' => '襫',
+ 'L' => '觺',
+ 'M' => '譹',
+ 'N' => '譸',
+ 'O' => '譅',
+ 'P' => '譺',
+ 'Q' => '譻',
+ 'R' => '贐',
+ 'S' => '贔',
+ 'T' => '趯',
+ 'U' => '躎',
+ 'V' => '躌',
+ 'W' => '轞',
+ 'X' => '轛',
+ 'Y' => '轝',
+ 'Z' => '酆',
+ '[' => '酄',
+ '\\' => '酅',
+ ']' => '醹',
+ '^' => '鐿',
+ '_' => '鐻',
+ '`' => '鐶',
+ 'a' => '鐩',
+ 'b' => '鐽',
+ 'c' => '鐼',
+ 'd' => '鐰',
+ 'e' => '鐹',
+ 'f' => '鐪',
+ 'g' => '鐷',
+ 'h' => '鐬',
+ 'i' => '鑀',
+ 'j' => '鐱',
+ 'k' => '闥',
+ 'l' => '闤',
+ 'm' => '闣',
+ 'n' => '霵',
+ 'o' => '霺',
+ 'p' => '鞿',
+ 'q' => '韡',
+ 'r' => '顤',
+ 's' => '飉',
+ 't' => '飆',
+ 'u' => '飀',
+ 'v' => '饘',
+ 'w' => '饖',
+ 'x' => '騹',
+ 'y' => '騽',
+ 'z' => '驆',
+ '{' => '驄',
+ '|' => '驂',
+ '}' => '驁',
+ '~' => '騺',
+ '' => '騿',
+ '' => '髍',
+ '' => '鬕',
+ '' => '鬗',
+ '' => '鬘',
+ '' => '鬖',
+ '' => '鬺',
+ '' => '魒',
+ '' => '鰫',
+ '' => '鰝',
+ '' => '鰜',
+ '' => '鰬',
+ '' => '鰣',
+ '' => '鰨',
+ '' => '鰩',
+ '' => '鰤',
+ '' => '鰡',
+ '' => '鶷',
+ '' => '鶶',
+ '' => '鶼',
+ '' => '鷁',
+ '' => '鷇',
+ '' => '鷊',
+ '' => '鷏',
+ '' => '鶾',
+ '' => '鷅',
+ '' => '鷃',
+ '' => '鶻',
+ '' => '鶵',
+ '' => '鷎',
+ '' => '鶹',
+ '' => '鶺',
+ '' => '鶬',
+ '' => '鷈',
+ '' => '鶱',
+ '' => '鶭',
+ '' => '鷌',
+ '' => '鶳',
+ '' => '鷍',
+ '' => '鶲',
+ '' => '鹺',
+ '' => '麜',
+ '' => '黫',
+ '' => '黮',
+ '' => '黭',
+ '' => '鼛',
+ '' => '鼘',
+ '' => '鼚',
+ '' => '鼱',
+ '' => '齎',
+ '' => '齥',
+ '' => '齤',
+ '' => '龒',
+ '' => '亹',
+ '' => '囆',
+ '' => '囅',
+ '' => '囋',
+ '' => '奱',
+ '' => '孋',
+ '' => '孌',
+ '' => '巕',
+ '' => '巑',
+ '' => '廲',
+ '' => '攡',
+ '' => '攠',
+ '' => '攦',
+ '' => '攢',
+ '' => '欋',
+ '' => '欈',
+ '' => '欉',
+ '' => '氍',
+ '' => '灕',
+ '' => '灖',
+ '' => '灗',
+ '' => '灒',
+ '' => '爞',
+ '' => '爟',
+ '' => '犩',
+ '' => '獿',
+ '' => '瓘',
+ '' => '瓕',
+ '' => '瓙',
+ '' => '瓗',
+ '' => '癭',
+ '' => '皭',
+ '' => '礵',
+ '' => '禴',
+ '' => '穰',
+ '' => '穱',
+ '' => '籗',
+ '' => '籜',
+ '' => '籙',
+ '' => '籛',
+ '' => '籚',
+ '@' => '糴',
+ 'A' => '糱',
+ 'B' => '纑',
+ 'C' => '罏',
+ 'D' => '羇',
+ 'E' => '臞',
+ 'F' => '艫',
+ 'G' => '蘴',
+ 'H' => '蘵',
+ 'I' => '蘳',
+ 'J' => '蘬',
+ 'K' => '蘲',
+ 'L' => '蘶',
+ 'M' => '蠬',
+ 'N' => '蠨',
+ 'O' => '蠦',
+ 'P' => '蠪',
+ 'Q' => '蠥',
+ 'R' => '襱',
+ 'S' => '覿',
+ 'T' => '覾',
+ 'U' => '觻',
+ 'V' => '譾',
+ 'W' => '讄',
+ 'X' => '讂',
+ 'Y' => '讆',
+ 'Z' => '讅',
+ '[' => '譿',
+ '\\' => '贕',
+ ']' => '躕',
+ '^' => '躔',
+ '_' => '躚',
+ '`' => '躒',
+ 'a' => '躐',
+ 'b' => '躖',
+ 'c' => '躗',
+ 'd' => '轠',
+ 'e' => '轢',
+ 'f' => '酇',
+ 'g' => '鑌',
+ 'h' => '鑐',
+ 'i' => '鑊',
+ 'j' => '鑋',
+ 'k' => '鑏',
+ 'l' => '鑇',
+ 'm' => '鑅',
+ 'n' => '鑈',
+ 'o' => '鑉',
+ 'p' => '鑆',
+ 'q' => '霿',
+ 'r' => '韣',
+ 's' => '顪',
+ 't' => '顩',
+ 'u' => '飋',
+ 'v' => '饔',
+ 'w' => '饛',
+ 'x' => '驎',
+ 'y' => '驓',
+ 'z' => '驔',
+ '{' => '驌',
+ '|' => '驏',
+ '}' => '驈',
+ '~' => '驊',
+ '' => '驉',
+ '' => '驒',
+ '' => '驐',
+ '' => '髐',
+ '' => '鬙',
+ '' => '鬫',
+ '' => '鬻',
+ '' => '魖',
+ '' => '魕',
+ '' => '鱆',
+ '' => '鱈',
+ '' => '鰿',
+ '' => '鱄',
+ '' => '鰹',
+ '' => '鰳',
+ '' => '鱁',
+ '' => '鰼',
+ '' => '鰷',
+ '' => '鰴',
+ '' => '鰲',
+ '' => '鰽',
+ '' => '鰶',
+ '' => '鷛',
+ '' => '鷒',
+ '' => '鷞',
+ '' => '鷚',
+ '' => '鷋',
+ '' => '鷐',
+ '' => '鷜',
+ '' => '鷑',
+ '' => '鷟',
+ '' => '鷩',
+ '' => '鷙',
+ '' => '鷘',
+ '' => '鷖',
+ '' => '鷵',
+ '' => '鷕',
+ '' => '鷝',
+ '' => '麶',
+ '' => '黰',
+ '' => '鼵',
+ '' => '鼳',
+ '' => '鼲',
+ '' => '齂',
+ '' => '齫',
+ '' => '龕',
+ '' => '龢',
+ '' => '儽',
+ '' => '劙',
+ '' => '壨',
+ '' => '壧',
+ '' => '奲',
+ '' => '孍',
+ '' => '巘',
+ '' => '蠯',
+ '' => '彏',
+ '' => '戁',
+ '' => '戃',
+ '' => '戄',
+ '' => '攩',
+ '' => '攥',
+ '' => '斖',
+ '' => '曫',
+ '' => '欑',
+ '' => '欒',
+ '' => '欏',
+ '' => '毊',
+ '' => '灛',
+ '' => '灚',
+ '' => '爢',
+ '' => '玂',
+ '' => '玁',
+ '' => '玃',
+ '' => '癰',
+ '' => '矔',
+ '' => '籧',
+ '' => '籦',
+ '' => '纕',
+ '' => '艬',
+ '' => '蘺',
+ '' => '虀',
+ '' => '蘹',
+ '' => '蘼',
+ '' => '蘱',
+ '' => '蘻',
+ '' => '蘾',
+ '' => '蠰',
+ '' => '蠲',
+ '' => '蠮',
+ '' => '蠳',
+ '' => '襶',
+ '' => '襴',
+ '' => '襳',
+ '' => '觾',
+ '@' => '讌',
+ 'A' => '讎',
+ 'B' => '讋',
+ 'C' => '讈',
+ 'D' => '豅',
+ 'E' => '贙',
+ 'F' => '躘',
+ 'G' => '轤',
+ 'H' => '轣',
+ 'I' => '醼',
+ 'J' => '鑢',
+ 'K' => '鑕',
+ 'L' => '鑝',
+ 'M' => '鑗',
+ 'N' => '鑞',
+ 'O' => '韄',
+ 'P' => '韅',
+ 'Q' => '頀',
+ 'R' => '驖',
+ 'S' => '驙',
+ 'T' => '鬞',
+ 'U' => '鬟',
+ 'V' => '鬠',
+ 'W' => '鱒',
+ 'X' => '鱘',
+ 'Y' => '鱐',
+ 'Z' => '鱊',
+ '[' => '鱍',
+ '\\' => '鱋',
+ ']' => '鱕',
+ '^' => '鱙',
+ '_' => '鱌',
+ '`' => '鱎',
+ 'a' => '鷻',
+ 'b' => '鷷',
+ 'c' => '鷯',
+ 'd' => '鷣',
+ 'e' => '鷫',
+ 'f' => '鷸',
+ 'g' => '鷤',
+ 'h' => '鷶',
+ 'i' => '鷡',
+ 'j' => '鷮',
+ 'k' => '鷦',
+ 'l' => '鷲',
+ 'm' => '鷰',
+ 'n' => '鷢',
+ 'o' => '鷬',
+ 'p' => '鷴',
+ 'q' => '鷳',
+ 'r' => '鷨',
+ 's' => '鷭',
+ 't' => '黂',
+ 'u' => '黐',
+ 'v' => '黲',
+ 'w' => '黳',
+ 'x' => '鼆',
+ 'y' => '鼜',
+ 'z' => '鼸',
+ '{' => '鼷',
+ '|' => '鼶',
+ '}' => '齃',
+ '~' => '齏',
+ '' => '齱',
+ '' => '齰',
+ '' => '齮',
+ '' => '齯',
+ '' => '囓',
+ '' => '囍',
+ '' => '孎',
+ '' => '屭',
+ '' => '攭',
+ '' => '曭',
+ '' => '曮',
+ '' => '欓',
+ '' => '灟',
+ '' => '灡',
+ '' => '灝',
+ '' => '灠',
+ '' => '爣',
+ '' => '瓛',
+ '' => '瓥',
+ '' => '矕',
+ '' => '礸',
+ '' => '禷',
+ '' => '禶',
+ '' => '籪',
+ '' => '纗',
+ '' => '羉',
+ '' => '艭',
+ '' => '虃',
+ '' => '蠸',
+ '' => '蠷',
+ '' => '蠵',
+ '' => '衋',
+ '' => '讔',
+ '' => '讕',
+ '' => '躞',
+ '' => '躟',
+ '' => '躠',
+ '' => '躝',
+ '' => '醾',
+ '' => '醽',
+ '' => '釂',
+ '' => '鑫',
+ '' => '鑨',
+ '' => '鑩',
+ '' => '雥',
+ '' => '靆',
+ '' => '靃',
+ '' => '靇',
+ '' => '韇',
+ '' => '韥',
+ '' => '驞',
+ '' => '髕',
+ '' => '魙',
+ '' => '鱣',
+ '' => '鱧',
+ '' => '鱦',
+ '' => '鱢',
+ '' => '鱞',
+ '' => '鱠',
+ '' => '鸂',
+ '' => '鷾',
+ '' => '鸇',
+ '' => '鸃',
+ '' => '鸆',
+ '' => '鸅',
+ '' => '鸀',
+ '' => '鸁',
+ '' => '鸉',
+ '' => '鷿',
+ '' => '鷽',
+ '' => '鸄',
+ '' => '麠',
+ '' => '鼞',
+ '' => '齆',
+ '' => '齴',
+ '' => '齵',
+ '' => '齶',
+ '' => '囔',
+ '' => '攮',
+ '' => '斸',
+ '' => '欘',
+ '' => '欙',
+ '' => '欗',
+ '' => '欚',
+ '' => '灢',
+ '' => '爦',
+ '' => '犪',
+ '' => '矘',
+ '' => '矙',
+ '' => '礹',
+ '' => '籩',
+ '' => '籫',
+ '' => '糶',
+ '' => '纚',
+ '@' => '纘',
+ 'A' => '纛',
+ 'B' => '纙',
+ 'C' => '臠',
+ 'D' => '臡',
+ 'E' => '虆',
+ 'F' => '虇',
+ 'G' => '虈',
+ 'H' => '襹',
+ 'I' => '襺',
+ 'J' => '襼',
+ 'K' => '襻',
+ 'L' => '觿',
+ 'M' => '讘',
+ 'N' => '讙',
+ 'O' => '躥',
+ 'P' => '躤',
+ 'Q' => '躣',
+ 'R' => '鑮',
+ 'S' => '鑭',
+ 'T' => '鑯',
+ 'U' => '鑱',
+ 'V' => '鑳',
+ 'W' => '靉',
+ 'X' => '顲',
+ 'Y' => '饟',
+ 'Z' => '鱨',
+ '[' => '鱮',
+ '\\' => '鱭',
+ ']' => '鸋',
+ '^' => '鸍',
+ '_' => '鸐',
+ '`' => '鸏',
+ 'a' => '鸒',
+ 'b' => '鸑',
+ 'c' => '麡',
+ 'd' => '黵',
+ 'e' => '鼉',
+ 'f' => '齇',
+ 'g' => '齸',
+ 'h' => '齻',
+ 'i' => '齺',
+ 'j' => '齹',
+ 'k' => '圞',
+ 'l' => '灦',
+ 'm' => '籯',
+ 'n' => '蠼',
+ 'o' => '趲',
+ 'p' => '躦',
+ 'q' => '釃',
+ 'r' => '鑴',
+ 's' => '鑸',
+ 't' => '鑶',
+ 'u' => '鑵',
+ 'v' => '驠',
+ 'w' => '鱴',
+ 'x' => '鱳',
+ 'y' => '鱱',
+ 'z' => '鱵',
+ '{' => '鸔',
+ '|' => '鸓',
+ '}' => '黶',
+ '~' => '鼊',
+ '' => '龤',
+ '' => '灨',
+ '' => '灥',
+ '' => '糷',
+ '' => '虪',
+ '' => '蠾',
+ '' => '蠽',
+ '' => '蠿',
+ '' => '讞',
+ '' => '貜',
+ '' => '躩',
+ '' => '軉',
+ '' => '靋',
+ '' => '顳',
+ '' => '顴',
+ '' => '飌',
+ '' => '饡',
+ '' => '馫',
+ '' => '驤',
+ '' => '驦',
+ '' => '驧',
+ '' => '鬤',
+ '' => '鸕',
+ '' => '鸗',
+ '' => '齈',
+ '' => '戇',
+ '' => '欞',
+ '' => '爧',
+ '' => '虌',
+ '' => '躨',
+ '' => '钂',
+ '' => '钀',
+ '' => '钁',
+ '' => '驩',
+ '' => '驨',
+ '' => '鬮',
+ '' => '鸙',
+ '' => '爩',
+ '' => '虋',
+ '' => '讟',
+ '' => '钃',
+ '' => '鱹',
+ '' => '麷',
+ '' => '癵',
+ '' => '驫',
+ '' => '鱺',
+ '' => '鸝',
+ '' => '灩',
+ '' => '灪',
+ '' => '麤',
+ '' => '齾',
+ '' => '齉',
+ '' => '龘',
+);
+
+$result =& $data;
+unset($data);
+
+return $result;
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php
new file mode 100644
index 0000000..a014e4b
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php
new file mode 100644
index 0000000..2b5e7be
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php
new file mode 100644
index 0000000..aba455b
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php
new file mode 100644
index 0000000..e8e2370
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php
new file mode 100644
index 0000000..e3ebb45
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php
new file mode 100644
index 0000000..3771c8f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php
new file mode 100644
index 0000000..2d67d33
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php
new file mode 100644
index 0000000..1fbc4cd
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php
new file mode 100644
index 0000000..0b314c8
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php
new file mode 100644
index 0000000..f8c318c
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php
new file mode 100644
index 0000000..48440ba
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php
new file mode 100644
index 0000000..c9cac0c
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php
new file mode 100644
index 0000000..3e7770a
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php
new file mode 100644
index 0000000..2a52d47
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php
new file mode 100644
index 0000000..4ba6573
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php
new file mode 100644
index 0000000..d2a29a2
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php
new file mode 100644
index 0000000..1f36b9a
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php
new file mode 100644
index 0000000..953e463
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php
new file mode 100644
index 0000000..2668bcc
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php
new file mode 100644
index 0000000..a7b47f8
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php
new file mode 100644
index 0000000..0f04054
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php
new file mode 100644
index 0000000..4799456
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php
new file mode 100644
index 0000000..8561645
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php
new file mode 100644
index 0000000..0bf828f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php
new file mode 100644
index 0000000..a593d05
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php
new file mode 100644
index 0000000..d4e99f1
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php
new file mode 100644
index 0000000..267b190
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php
new file mode 100644
index 0000000..d7a217c
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php
new file mode 100644
index 0000000..d60f647
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php
new file mode 100644
index 0000000..d69220b
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php
new file mode 100644
index 0000000..838783f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php
new file mode 100644
index 0000000..65a48ee
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php
new file mode 100644
index 0000000..42e50e0
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php
new file mode 100644
index 0000000..46758a6
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php
new file mode 100644
index 0000000..5f23f51
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php
new file mode 100644
index 0000000..b31bb83
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php
new file mode 100644
index 0000000..9cbf9f3
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php
new file mode 100644
index 0000000..fd03882
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php
new file mode 100644
index 0000000..ed6f72f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php
new file mode 100644
index 0000000..cf723ac
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php
new file mode 100644
index 0000000..c978731
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php
new file mode 100644
index 0000000..2a3e36a
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php
new file mode 100644
index 0000000..d83c212
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php
new file mode 100644
index 0000000..dbbf96b
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php
new file mode 100644
index 0000000..94a93b2
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php
new file mode 100644
index 0000000..d1d5e6f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php
new file mode 100644
index 0000000..f422a71
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php
new file mode 100644
index 0000000..ba6d203
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php
new file mode 100644
index 0000000..c04dc8f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php
new file mode 100644
index 0000000..1cfadcf
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php
new file mode 100644
index 0000000..f73cbb6
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php
new file mode 100644
index 0000000..953704f
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php
new file mode 100644
index 0000000..78580ec
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php
new file mode 100644
index 0000000..de1609d
Binary files /dev/null and b/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php differ
diff --git a/vendor/symfony/polyfill-iconv/Resources/charset/translit.php b/vendor/symfony/polyfill-iconv/Resources/charset/translit.php
new file mode 100644
index 0000000..829ea12
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/Resources/charset/translit.php
@@ -0,0 +1,3969 @@
+ 'μ',
+ '¼' => ' 1⁄4 ',
+ '½' => ' 1⁄2 ',
+ '¾' => ' 3⁄4 ',
+ 'IJ' => 'IJ',
+ 'ij' => 'ij',
+ 'Ŀ' => 'L·',
+ 'ŀ' => 'l·',
+ 'ʼn' => 'ʼn',
+ 'ſ' => 's',
+ 'DŽ' => 'DŽ',
+ 'Dž' => 'Dž',
+ 'dž' => 'dž',
+ 'LJ' => 'LJ',
+ 'Lj' => 'Lj',
+ 'lj' => 'lj',
+ 'NJ' => 'NJ',
+ 'Nj' => 'Nj',
+ 'nj' => 'nj',
+ 'DZ' => 'DZ',
+ 'Dz' => 'Dz',
+ 'dz' => 'dz',
+ 'ϐ' => 'β',
+ 'ϑ' => 'θ',
+ 'ϒ' => 'Υ',
+ 'ϕ' => 'φ',
+ 'ϖ' => 'π',
+ 'ϰ' => 'κ',
+ 'ϱ' => 'ρ',
+ 'ϲ' => 'ς',
+ 'ϴ' => 'Θ',
+ 'ϵ' => 'ε',
+ 'Ϲ' => 'Σ',
+ 'և' => 'եւ',
+ 'ٵ' => 'اٴ',
+ 'ٶ' => 'وٴ',
+ 'ٷ' => 'ۇٴ',
+ 'ٸ' => 'يٴ',
+ 'ำ' => 'ํา',
+ 'ຳ' => 'ໍາ',
+ 'ໜ' => 'ຫນ',
+ 'ໝ' => 'ຫມ',
+ 'ཷ' => 'ྲཱྀ',
+ 'ཹ' => 'ླཱྀ',
+ 'ẚ' => 'aʾ',
+ '․' => '.',
+ '‥' => '..',
+ '…' => '...',
+ '″' => '′′',
+ '‴' => '′′′',
+ '‶' => '‵‵',
+ '‷' => '‵‵‵',
+ '‼' => '!!',
+ '⁇' => '??',
+ '⁈' => '?!',
+ '⁉' => '!?',
+ '⁗' => '′′′′',
+ '₨' => 'Rs',
+ '℀' => 'a/c',
+ '℁' => 'a/s',
+ 'ℂ' => 'C',
+ '℃' => '°C',
+ '℅' => 'c/o',
+ '℆' => 'c/u',
+ 'ℇ' => 'Ɛ',
+ '℉' => '°F',
+ 'ℊ' => 'g',
+ 'ℋ' => 'H',
+ 'ℌ' => 'H',
+ 'ℍ' => 'H',
+ 'ℎ' => 'h',
+ 'ℏ' => 'ħ',
+ 'ℐ' => 'I',
+ 'ℑ' => 'I',
+ 'ℒ' => 'L',
+ 'ℓ' => 'l',
+ 'ℕ' => 'N',
+ '№' => 'No',
+ 'ℙ' => 'P',
+ 'ℚ' => 'Q',
+ 'ℛ' => 'R',
+ 'ℜ' => 'R',
+ 'ℝ' => 'R',
+ '℡' => 'TEL',
+ 'ℤ' => 'Z',
+ 'ℨ' => 'Z',
+ 'ℬ' => 'B',
+ 'ℭ' => 'C',
+ 'ℯ' => 'e',
+ 'ℰ' => 'E',
+ 'ℱ' => 'F',
+ 'ℳ' => 'M',
+ 'ℴ' => 'o',
+ 'ℵ' => 'א',
+ 'ℶ' => 'ב',
+ 'ℷ' => 'ג',
+ 'ℸ' => 'ד',
+ 'ℹ' => 'i',
+ '℻' => 'FAX',
+ 'ℼ' => 'π',
+ 'ℽ' => 'γ',
+ 'ℾ' => 'Γ',
+ 'ℿ' => 'Π',
+ '⅀' => '∑',
+ 'ⅅ' => 'D',
+ 'ⅆ' => 'd',
+ 'ⅇ' => 'e',
+ 'ⅈ' => 'i',
+ 'ⅉ' => 'j',
+ '⅐' => ' 1⁄7 ',
+ '⅑' => ' 1⁄9 ',
+ '⅒' => ' 1⁄10 ',
+ '⅓' => ' 1⁄3 ',
+ '⅔' => ' 2⁄3 ',
+ '⅕' => ' 1⁄5 ',
+ '⅖' => ' 2⁄5 ',
+ '⅗' => ' 3⁄5 ',
+ '⅘' => ' 4⁄5 ',
+ '⅙' => ' 1⁄6 ',
+ '⅚' => ' 5⁄6 ',
+ '⅛' => ' 1⁄8 ',
+ '⅜' => ' 3⁄8 ',
+ '⅝' => ' 5⁄8 ',
+ '⅞' => ' 7⁄8 ',
+ '⅟' => ' 1⁄ ',
+ 'Ⅰ' => 'I',
+ 'Ⅱ' => 'II',
+ 'Ⅲ' => 'III',
+ 'Ⅳ' => 'IV',
+ 'Ⅴ' => 'V',
+ 'Ⅵ' => 'VI',
+ 'Ⅶ' => 'VII',
+ 'Ⅷ' => 'VIII',
+ 'Ⅸ' => 'IX',
+ 'Ⅹ' => 'X',
+ 'Ⅺ' => 'XI',
+ 'Ⅻ' => 'XII',
+ 'Ⅼ' => 'L',
+ 'Ⅽ' => 'C',
+ 'Ⅾ' => 'D',
+ 'Ⅿ' => 'M',
+ 'ⅰ' => 'i',
+ 'ⅱ' => 'ii',
+ 'ⅲ' => 'iii',
+ 'ⅳ' => 'iv',
+ 'ⅴ' => 'v',
+ 'ⅵ' => 'vi',
+ 'ⅶ' => 'vii',
+ 'ⅷ' => 'viii',
+ 'ⅸ' => 'ix',
+ 'ⅹ' => 'x',
+ 'ⅺ' => 'xi',
+ 'ⅻ' => 'xii',
+ 'ⅼ' => 'l',
+ 'ⅽ' => 'c',
+ 'ⅾ' => 'd',
+ 'ⅿ' => 'm',
+ '↉' => ' 0⁄3 ',
+ '∬' => '∫∫',
+ '∭' => '∫∫∫',
+ '∯' => '∮∮',
+ '∰' => '∮∮∮',
+ '①' => '(1)',
+ '②' => '(2)',
+ '③' => '(3)',
+ '④' => '(4)',
+ '⑤' => '(5)',
+ '⑥' => '(6)',
+ '⑦' => '(7)',
+ '⑧' => '(8)',
+ '⑨' => '(9)',
+ '⑩' => '(10)',
+ '⑪' => '(11)',
+ '⑫' => '(12)',
+ '⑬' => '(13)',
+ '⑭' => '(14)',
+ '⑮' => '(15)',
+ '⑯' => '(16)',
+ '⑰' => '(17)',
+ '⑱' => '(18)',
+ '⑲' => '(19)',
+ '⑳' => '(20)',
+ '⑴' => '(1)',
+ '⑵' => '(2)',
+ '⑶' => '(3)',
+ '⑷' => '(4)',
+ '⑸' => '(5)',
+ '⑹' => '(6)',
+ '⑺' => '(7)',
+ '⑻' => '(8)',
+ '⑼' => '(9)',
+ '⑽' => '(10)',
+ '⑾' => '(11)',
+ '⑿' => '(12)',
+ '⒀' => '(13)',
+ '⒁' => '(14)',
+ '⒂' => '(15)',
+ '⒃' => '(16)',
+ '⒄' => '(17)',
+ '⒅' => '(18)',
+ '⒆' => '(19)',
+ '⒇' => '(20)',
+ '⒈' => '1.',
+ '⒉' => '2.',
+ '⒊' => '3.',
+ '⒋' => '4.',
+ '⒌' => '5.',
+ '⒍' => '6.',
+ '⒎' => '7.',
+ '⒏' => '8.',
+ '⒐' => '9.',
+ '⒑' => '10.',
+ '⒒' => '11.',
+ '⒓' => '12.',
+ '⒔' => '13.',
+ '⒕' => '14.',
+ '⒖' => '15.',
+ '⒗' => '16.',
+ '⒘' => '17.',
+ '⒙' => '18.',
+ '⒚' => '19.',
+ '⒛' => '20.',
+ '⒜' => '(a)',
+ '⒝' => '(b)',
+ '⒞' => '(c)',
+ '⒟' => '(d)',
+ '⒠' => '(e)',
+ '⒡' => '(f)',
+ '⒢' => '(g)',
+ '⒣' => '(h)',
+ '⒤' => '(i)',
+ '⒥' => '(j)',
+ '⒦' => '(k)',
+ '⒧' => '(l)',
+ '⒨' => '(m)',
+ '⒩' => '(n)',
+ '⒪' => '(o)',
+ '⒫' => '(p)',
+ '⒬' => '(q)',
+ '⒭' => '(r)',
+ '⒮' => '(s)',
+ '⒯' => '(t)',
+ '⒰' => '(u)',
+ '⒱' => '(v)',
+ '⒲' => '(w)',
+ '⒳' => '(x)',
+ '⒴' => '(y)',
+ '⒵' => '(z)',
+ 'Ⓐ' => '(A)',
+ 'Ⓑ' => '(B)',
+ 'Ⓒ' => '(C)',
+ 'Ⓓ' => '(D)',
+ 'Ⓔ' => '(E)',
+ 'Ⓕ' => '(F)',
+ 'Ⓖ' => '(G)',
+ 'Ⓗ' => '(H)',
+ 'Ⓘ' => '(I)',
+ 'Ⓙ' => '(J)',
+ 'Ⓚ' => '(K)',
+ 'Ⓛ' => '(L)',
+ 'Ⓜ' => '(M)',
+ 'Ⓝ' => '(N)',
+ 'Ⓞ' => '(O)',
+ 'Ⓟ' => '(P)',
+ 'Ⓠ' => '(Q)',
+ 'Ⓡ' => '(R)',
+ 'Ⓢ' => '(S)',
+ 'Ⓣ' => '(T)',
+ 'Ⓤ' => '(U)',
+ 'Ⓥ' => '(V)',
+ 'Ⓦ' => '(W)',
+ 'Ⓧ' => '(X)',
+ 'Ⓨ' => '(Y)',
+ 'Ⓩ' => '(Z)',
+ 'ⓐ' => '(a)',
+ 'ⓑ' => '(b)',
+ 'ⓒ' => '(c)',
+ 'ⓓ' => '(d)',
+ 'ⓔ' => '(e)',
+ 'ⓕ' => '(f)',
+ 'ⓖ' => '(g)',
+ 'ⓗ' => '(h)',
+ 'ⓘ' => '(i)',
+ 'ⓙ' => '(j)',
+ 'ⓚ' => '(k)',
+ 'ⓛ' => '(l)',
+ 'ⓜ' => '(m)',
+ 'ⓝ' => '(n)',
+ 'ⓞ' => '(o)',
+ 'ⓟ' => '(p)',
+ 'ⓠ' => '(q)',
+ 'ⓡ' => '(r)',
+ 'ⓢ' => '(s)',
+ 'ⓣ' => '(t)',
+ 'ⓤ' => '(u)',
+ 'ⓥ' => '(v)',
+ 'ⓦ' => '(w)',
+ 'ⓧ' => '(x)',
+ 'ⓨ' => '(y)',
+ 'ⓩ' => '(z)',
+ '⓪' => '(0)',
+ '⨌' => '∫∫∫∫',
+ '⩴' => '::=',
+ '⩵' => '==',
+ '⩶' => '===',
+ '⺟' => '母',
+ '⻳' => '龟',
+ '⼀' => '一',
+ '⼁' => '丨',
+ '⼂' => '丶',
+ '⼃' => '丿',
+ '⼄' => '乙',
+ '⼅' => '亅',
+ '⼆' => '二',
+ '⼇' => '亠',
+ '⼈' => '人',
+ '⼉' => '儿',
+ '⼊' => '入',
+ '⼋' => '八',
+ '⼌' => '冂',
+ '⼍' => '冖',
+ '⼎' => '冫',
+ '⼏' => '几',
+ '⼐' => '凵',
+ '⼑' => '刀',
+ '⼒' => '力',
+ '⼓' => '勹',
+ '⼔' => '匕',
+ '⼕' => '匚',
+ '⼖' => '匸',
+ '⼗' => '十',
+ '⼘' => '卜',
+ '⼙' => '卩',
+ '⼚' => '厂',
+ '⼛' => '厶',
+ '⼜' => '又',
+ '⼝' => '口',
+ '⼞' => '囗',
+ '⼟' => '土',
+ '⼠' => '士',
+ '⼡' => '夂',
+ '⼢' => '夊',
+ '⼣' => '夕',
+ '⼤' => '大',
+ '⼥' => '女',
+ '⼦' => '子',
+ '⼧' => '宀',
+ '⼨' => '寸',
+ '⼩' => '小',
+ '⼪' => '尢',
+ '⼫' => '尸',
+ '⼬' => '屮',
+ '⼭' => '山',
+ '⼮' => '巛',
+ '⼯' => '工',
+ '⼰' => '己',
+ '⼱' => '巾',
+ '⼲' => '干',
+ '⼳' => '幺',
+ '⼴' => '广',
+ '⼵' => '廴',
+ '⼶' => '廾',
+ '⼷' => '弋',
+ '⼸' => '弓',
+ '⼹' => '彐',
+ '⼺' => '彡',
+ '⼻' => '彳',
+ '⼼' => '心',
+ '⼽' => '戈',
+ '⼾' => '戶',
+ '⼿' => '手',
+ '⽀' => '支',
+ '⽁' => '攴',
+ '⽂' => '文',
+ '⽃' => '斗',
+ '⽄' => '斤',
+ '⽅' => '方',
+ '⽆' => '无',
+ '⽇' => '日',
+ '⽈' => '曰',
+ '⽉' => '月',
+ '⽊' => '木',
+ '⽋' => '欠',
+ '⽌' => '止',
+ '⽍' => '歹',
+ '⽎' => '殳',
+ '⽏' => '毋',
+ '⽐' => '比',
+ '⽑' => '毛',
+ '⽒' => '氏',
+ '⽓' => '气',
+ '⽔' => '水',
+ '⽕' => '火',
+ '⽖' => '爪',
+ '⽗' => '父',
+ '⽘' => '爻',
+ '⽙' => '爿',
+ '⽚' => '片',
+ '⽛' => '牙',
+ '⽜' => '牛',
+ '⽝' => '犬',
+ '⽞' => '玄',
+ '⽟' => '玉',
+ '⽠' => '瓜',
+ '⽡' => '瓦',
+ '⽢' => '甘',
+ '⽣' => '生',
+ '⽤' => '用',
+ '⽥' => '田',
+ '⽦' => '疋',
+ '⽧' => '疒',
+ '⽨' => '癶',
+ '⽩' => '白',
+ '⽪' => '皮',
+ '⽫' => '皿',
+ '⽬' => '目',
+ '⽭' => '矛',
+ '⽮' => '矢',
+ '⽯' => '石',
+ '⽰' => '示',
+ '⽱' => '禸',
+ '⽲' => '禾',
+ '⽳' => '穴',
+ '⽴' => '立',
+ '⽵' => '竹',
+ '⽶' => '米',
+ '⽷' => '糸',
+ '⽸' => '缶',
+ '⽹' => '网',
+ '⽺' => '羊',
+ '⽻' => '羽',
+ '⽼' => '老',
+ '⽽' => '而',
+ '⽾' => '耒',
+ '⽿' => '耳',
+ '⾀' => '聿',
+ '⾁' => '肉',
+ '⾂' => '臣',
+ '⾃' => '自',
+ '⾄' => '至',
+ '⾅' => '臼',
+ '⾆' => '舌',
+ '⾇' => '舛',
+ '⾈' => '舟',
+ '⾉' => '艮',
+ '⾊' => '色',
+ '⾋' => '艸',
+ '⾌' => '虍',
+ '⾍' => '虫',
+ '⾎' => '血',
+ '⾏' => '行',
+ '⾐' => '衣',
+ '⾑' => '襾',
+ '⾒' => '見',
+ '⾓' => '角',
+ '⾔' => '言',
+ '⾕' => '谷',
+ '⾖' => '豆',
+ '⾗' => '豕',
+ '⾘' => '豸',
+ '⾙' => '貝',
+ '⾚' => '赤',
+ '⾛' => '走',
+ '⾜' => '足',
+ '⾝' => '身',
+ '⾞' => '車',
+ '⾟' => '辛',
+ '⾠' => '辰',
+ '⾡' => '辵',
+ '⾢' => '邑',
+ '⾣' => '酉',
+ '⾤' => '釆',
+ '⾥' => '里',
+ '⾦' => '金',
+ '⾧' => '長',
+ '⾨' => '門',
+ '⾩' => '阜',
+ '⾪' => '隶',
+ '⾫' => '隹',
+ '⾬' => '雨',
+ '⾭' => '靑',
+ '⾮' => '非',
+ '⾯' => '面',
+ '⾰' => '革',
+ '⾱' => '韋',
+ '⾲' => '韭',
+ '⾳' => '音',
+ '⾴' => '頁',
+ '⾵' => '風',
+ '⾶' => '飛',
+ '⾷' => '食',
+ '⾸' => '首',
+ '⾹' => '香',
+ '⾺' => '馬',
+ '⾻' => '骨',
+ '⾼' => '高',
+ '⾽' => '髟',
+ '⾾' => '鬥',
+ '⾿' => '鬯',
+ '⿀' => '鬲',
+ '⿁' => '鬼',
+ '⿂' => '魚',
+ '⿃' => '鳥',
+ '⿄' => '鹵',
+ '⿅' => '鹿',
+ '⿆' => '麥',
+ '⿇' => '麻',
+ '⿈' => '黃',
+ '⿉' => '黍',
+ '⿊' => '黑',
+ '⿋' => '黹',
+ '⿌' => '黽',
+ '⿍' => '鼎',
+ '⿎' => '鼓',
+ '⿏' => '鼠',
+ '⿐' => '鼻',
+ '⿑' => '齊',
+ '⿒' => '齒',
+ '⿓' => '龍',
+ '⿔' => '龜',
+ '⿕' => '龠',
+ ' ' => ' ',
+ '〶' => '〒',
+ '〸' => '十',
+ '〹' => '卄',
+ '〺' => '卅',
+ 'ㄱ' => 'ᄀ',
+ 'ㄲ' => 'ᄁ',
+ 'ㄳ' => 'ᆪ',
+ 'ㄴ' => 'ᄂ',
+ 'ㄵ' => 'ᆬ',
+ 'ㄶ' => 'ᆭ',
+ 'ㄷ' => 'ᄃ',
+ 'ㄸ' => 'ᄄ',
+ 'ㄹ' => 'ᄅ',
+ 'ㄺ' => 'ᆰ',
+ 'ㄻ' => 'ᆱ',
+ 'ㄼ' => 'ᆲ',
+ 'ㄽ' => 'ᆳ',
+ 'ㄾ' => 'ᆴ',
+ 'ㄿ' => 'ᆵ',
+ 'ㅀ' => 'ᄚ',
+ 'ㅁ' => 'ᄆ',
+ 'ㅂ' => 'ᄇ',
+ 'ㅃ' => 'ᄈ',
+ 'ㅄ' => 'ᄡ',
+ 'ㅅ' => 'ᄉ',
+ 'ㅆ' => 'ᄊ',
+ 'ㅇ' => 'ᄋ',
+ 'ㅈ' => 'ᄌ',
+ 'ㅉ' => 'ᄍ',
+ 'ㅊ' => 'ᄎ',
+ 'ㅋ' => 'ᄏ',
+ 'ㅌ' => 'ᄐ',
+ 'ㅍ' => 'ᄑ',
+ 'ㅎ' => 'ᄒ',
+ 'ㅏ' => 'ᅡ',
+ 'ㅐ' => 'ᅢ',
+ 'ㅑ' => 'ᅣ',
+ 'ㅒ' => 'ᅤ',
+ 'ㅓ' => 'ᅥ',
+ 'ㅔ' => 'ᅦ',
+ 'ㅕ' => 'ᅧ',
+ 'ㅖ' => 'ᅨ',
+ 'ㅗ' => 'ᅩ',
+ 'ㅘ' => 'ᅪ',
+ 'ㅙ' => 'ᅫ',
+ 'ㅚ' => 'ᅬ',
+ 'ㅛ' => 'ᅭ',
+ 'ㅜ' => 'ᅮ',
+ 'ㅝ' => 'ᅯ',
+ 'ㅞ' => 'ᅰ',
+ 'ㅟ' => 'ᅱ',
+ 'ㅠ' => 'ᅲ',
+ 'ㅡ' => 'ᅳ',
+ 'ㅢ' => 'ᅴ',
+ 'ㅣ' => 'ᅵ',
+ 'ㅤ' => 'ᅠ',
+ 'ㅥ' => 'ᄔ',
+ 'ㅦ' => 'ᄕ',
+ 'ㅧ' => 'ᇇ',
+ 'ㅨ' => 'ᇈ',
+ 'ㅩ' => 'ᇌ',
+ 'ㅪ' => 'ᇎ',
+ 'ㅫ' => 'ᇓ',
+ 'ㅬ' => 'ᇗ',
+ 'ㅭ' => 'ᇙ',
+ 'ㅮ' => 'ᄜ',
+ 'ㅯ' => 'ᇝ',
+ 'ㅰ' => 'ᇟ',
+ 'ㅱ' => 'ᄝ',
+ 'ㅲ' => 'ᄞ',
+ 'ㅳ' => 'ᄠ',
+ 'ㅴ' => 'ᄢ',
+ 'ㅵ' => 'ᄣ',
+ 'ㅶ' => 'ᄧ',
+ 'ㅷ' => 'ᄩ',
+ 'ㅸ' => 'ᄫ',
+ 'ㅹ' => 'ᄬ',
+ 'ㅺ' => 'ᄭ',
+ 'ㅻ' => 'ᄮ',
+ 'ㅼ' => 'ᄯ',
+ 'ㅽ' => 'ᄲ',
+ 'ㅾ' => 'ᄶ',
+ 'ㅿ' => 'ᅀ',
+ 'ㆀ' => 'ᅇ',
+ 'ㆁ' => 'ᅌ',
+ 'ㆂ' => 'ᇱ',
+ 'ㆃ' => 'ᇲ',
+ 'ㆄ' => 'ᅗ',
+ 'ㆅ' => 'ᅘ',
+ 'ㆆ' => 'ᅙ',
+ 'ㆇ' => 'ᆄ',
+ 'ㆈ' => 'ᆅ',
+ 'ㆉ' => 'ᆈ',
+ 'ㆊ' => 'ᆑ',
+ 'ㆋ' => 'ᆒ',
+ 'ㆌ' => 'ᆔ',
+ 'ㆍ' => 'ᆞ',
+ 'ㆎ' => 'ᆡ',
+ '㈀' => '(ᄀ)',
+ '㈁' => '(ᄂ)',
+ '㈂' => '(ᄃ)',
+ '㈃' => '(ᄅ)',
+ '㈄' => '(ᄆ)',
+ '㈅' => '(ᄇ)',
+ '㈆' => '(ᄉ)',
+ '㈇' => '(ᄋ)',
+ '㈈' => '(ᄌ)',
+ '㈉' => '(ᄎ)',
+ '㈊' => '(ᄏ)',
+ '㈋' => '(ᄐ)',
+ '㈌' => '(ᄑ)',
+ '㈍' => '(ᄒ)',
+ '㈎' => '(가)',
+ '㈏' => '(나)',
+ '㈐' => '(다)',
+ '㈑' => '(라)',
+ '㈒' => '(마)',
+ '㈓' => '(바)',
+ '㈔' => '(사)',
+ '㈕' => '(아)',
+ '㈖' => '(자)',
+ '㈗' => '(차)',
+ '㈘' => '(카)',
+ '㈙' => '(타)',
+ '㈚' => '(파)',
+ '㈛' => '(하)',
+ '㈜' => '(주)',
+ '㈝' => '(오전)',
+ '㈞' => '(오후)',
+ '㈠' => '(一)',
+ '㈡' => '(二)',
+ '㈢' => '(三)',
+ '㈣' => '(四)',
+ '㈤' => '(五)',
+ '㈥' => '(六)',
+ '㈦' => '(七)',
+ '㈧' => '(八)',
+ '㈨' => '(九)',
+ '㈩' => '(十)',
+ '㈪' => '(月)',
+ '㈫' => '(火)',
+ '㈬' => '(水)',
+ '㈭' => '(木)',
+ '㈮' => '(金)',
+ '㈯' => '(土)',
+ '㈰' => '(日)',
+ '㈱' => '(株)',
+ '㈲' => '(有)',
+ '㈳' => '(社)',
+ '㈴' => '(名)',
+ '㈵' => '(特)',
+ '㈶' => '(財)',
+ '㈷' => '(祝)',
+ '㈸' => '(労)',
+ '㈹' => '(代)',
+ '㈺' => '(呼)',
+ '㈻' => '(学)',
+ '㈼' => '(監)',
+ '㈽' => '(企)',
+ '㈾' => '(資)',
+ '㈿' => '(協)',
+ '㉀' => '(祭)',
+ '㉁' => '(休)',
+ '㉂' => '(自)',
+ '㉃' => '(至)',
+ '㉄' => '(問)',
+ '㉅' => '(幼)',
+ '㉆' => '(文)',
+ '㉇' => '(箏)',
+ '㉐' => 'PTE',
+ '㉑' => '(21)',
+ '㉒' => '(22)',
+ '㉓' => '(23)',
+ '㉔' => '(24)',
+ '㉕' => '(25)',
+ '㉖' => '(26)',
+ '㉗' => '(27)',
+ '㉘' => '(28)',
+ '㉙' => '(29)',
+ '㉚' => '(30)',
+ '㉛' => '(31)',
+ '㉜' => '(32)',
+ '㉝' => '(33)',
+ '㉞' => '(34)',
+ '㉟' => '(35)',
+ '㉠' => '(ᄀ)',
+ '㉡' => '(ᄂ)',
+ '㉢' => '(ᄃ)',
+ '㉣' => '(ᄅ)',
+ '㉤' => '(ᄆ)',
+ '㉥' => '(ᄇ)',
+ '㉦' => '(ᄉ)',
+ '㉧' => '(ᄋ)',
+ '㉨' => '(ᄌ)',
+ '㉩' => '(ᄎ)',
+ '㉪' => '(ᄏ)',
+ '㉫' => '(ᄐ)',
+ '㉬' => '(ᄑ)',
+ '㉭' => '(ᄒ)',
+ '㉮' => '(가)',
+ '㉯' => '(나)',
+ '㉰' => '(다)',
+ '㉱' => '(라)',
+ '㉲' => '(마)',
+ '㉳' => '(바)',
+ '㉴' => '(사)',
+ '㉵' => '(아)',
+ '㉶' => '(자)',
+ '㉷' => '(차)',
+ '㉸' => '(카)',
+ '㉹' => '(타)',
+ '㉺' => '(파)',
+ '㉻' => '(하)',
+ '㉼' => '(참고)',
+ '㉽' => '(주의)',
+ '㉾' => '(우)',
+ '㊀' => '(一)',
+ '㊁' => '(二)',
+ '㊂' => '(三)',
+ '㊃' => '(四)',
+ '㊄' => '(五)',
+ '㊅' => '(六)',
+ '㊆' => '(七)',
+ '㊇' => '(八)',
+ '㊈' => '(九)',
+ '㊉' => '(十)',
+ '㊊' => '(月)',
+ '㊋' => '(火)',
+ '㊌' => '(水)',
+ '㊍' => '(木)',
+ '㊎' => '(金)',
+ '㊏' => '(土)',
+ '㊐' => '(日)',
+ '㊑' => '(株)',
+ '㊒' => '(有)',
+ '㊓' => '(社)',
+ '㊔' => '(名)',
+ '㊕' => '(特)',
+ '㊖' => '(財)',
+ '㊗' => '(祝)',
+ '㊘' => '(労)',
+ '㊙' => '(秘)',
+ '㊚' => '(男)',
+ '㊛' => '(女)',
+ '㊜' => '(適)',
+ '㊝' => '(優)',
+ '㊞' => '(印)',
+ '㊟' => '(注)',
+ '㊠' => '(項)',
+ '㊡' => '(休)',
+ '㊢' => '(写)',
+ '㊣' => '(正)',
+ '㊤' => '(上)',
+ '㊥' => '(中)',
+ '㊦' => '(下)',
+ '㊧' => '(左)',
+ '㊨' => '(右)',
+ '㊩' => '(医)',
+ '㊪' => '(宗)',
+ '㊫' => '(学)',
+ '㊬' => '(監)',
+ '㊭' => '(企)',
+ '㊮' => '(資)',
+ '㊯' => '(協)',
+ '㊰' => '(夜)',
+ '㊱' => '(36)',
+ '㊲' => '(37)',
+ '㊳' => '(38)',
+ '㊴' => '(39)',
+ '㊵' => '(40)',
+ '㊶' => '(41)',
+ '㊷' => '(42)',
+ '㊸' => '(43)',
+ '㊹' => '(44)',
+ '㊺' => '(45)',
+ '㊻' => '(46)',
+ '㊼' => '(47)',
+ '㊽' => '(48)',
+ '㊾' => '(49)',
+ '㊿' => '(50)',
+ '㋀' => '1月',
+ '㋁' => '2月',
+ '㋂' => '3月',
+ '㋃' => '4月',
+ '㋄' => '5月',
+ '㋅' => '6月',
+ '㋆' => '7月',
+ '㋇' => '8月',
+ '㋈' => '9月',
+ '㋉' => '10月',
+ '㋊' => '11月',
+ '㋋' => '12月',
+ '㋌' => 'Hg',
+ '㋍' => 'erg',
+ '㋎' => 'eV',
+ '㋏' => 'LTD',
+ '㋐' => '(ア)',
+ '㋑' => '(イ)',
+ '㋒' => '(ウ)',
+ '㋓' => '(エ)',
+ '㋔' => '(オ)',
+ '㋕' => '(カ)',
+ '㋖' => '(キ)',
+ '㋗' => '(ク)',
+ '㋘' => '(ケ)',
+ '㋙' => '(コ)',
+ '㋚' => '(サ)',
+ '㋛' => '(シ)',
+ '㋜' => '(ス)',
+ '㋝' => '(セ)',
+ '㋞' => '(ソ)',
+ '㋟' => '(タ)',
+ '㋠' => '(チ)',
+ '㋡' => '(ツ)',
+ '㋢' => '(テ)',
+ '㋣' => '(ト)',
+ '㋤' => '(ナ)',
+ '㋥' => '(ニ)',
+ '㋦' => '(ヌ)',
+ '㋧' => '(ネ)',
+ '㋨' => '(ノ)',
+ '㋩' => '(ハ)',
+ '㋪' => '(ヒ)',
+ '㋫' => '(フ)',
+ '㋬' => '(ヘ)',
+ '㋭' => '(ホ)',
+ '㋮' => '(マ)',
+ '㋯' => '(ミ)',
+ '㋰' => '(ム)',
+ '㋱' => '(メ)',
+ '㋲' => '(モ)',
+ '㋳' => '(ヤ)',
+ '㋴' => '(ユ)',
+ '㋵' => '(ヨ)',
+ '㋶' => '(ラ)',
+ '㋷' => '(リ)',
+ '㋸' => '(ル)',
+ '㋹' => '(レ)',
+ '㋺' => '(ロ)',
+ '㋻' => '(ワ)',
+ '㋼' => '(ヰ)',
+ '㋽' => '(ヱ)',
+ '㋾' => '(ヲ)',
+ '㌀' => 'アパート',
+ '㌁' => 'アルファ',
+ '㌂' => 'アンペア',
+ '㌃' => 'アール',
+ '㌄' => 'イニング',
+ '㌅' => 'インチ',
+ '㌆' => 'ウォン',
+ '㌇' => 'エスクード',
+ '㌈' => 'エーカー',
+ '㌉' => 'オンス',
+ '㌊' => 'オーム',
+ '㌋' => 'カイリ',
+ '㌌' => 'カラット',
+ '㌍' => 'カロリー',
+ '㌎' => 'ガロン',
+ '㌏' => 'ガンマ',
+ '㌐' => 'ギガ',
+ '㌑' => 'ギニー',
+ '㌒' => 'キュリー',
+ '㌓' => 'ギルダー',
+ '㌔' => 'キロ',
+ '㌕' => 'キログラム',
+ '㌖' => 'キロメートル',
+ '㌗' => 'キロワット',
+ '㌘' => 'グラム',
+ '㌙' => 'グラムトン',
+ '㌚' => 'クルゼイロ',
+ '㌛' => 'クローネ',
+ '㌜' => 'ケース',
+ '㌝' => 'コルナ',
+ '㌞' => 'コーポ',
+ '㌟' => 'サイクル',
+ '㌠' => 'サンチーム',
+ '㌡' => 'シリング',
+ '㌢' => 'センチ',
+ '㌣' => 'セント',
+ '㌤' => 'ダース',
+ '㌥' => 'デシ',
+ '㌦' => 'ドル',
+ '㌧' => 'トン',
+ '㌨' => 'ナノ',
+ '㌩' => 'ノット',
+ '㌪' => 'ハイツ',
+ '㌫' => 'パーセント',
+ '㌬' => 'パーツ',
+ '㌭' => 'バーレル',
+ '㌮' => 'ピアストル',
+ '㌯' => 'ピクル',
+ '㌰' => 'ピコ',
+ '㌱' => 'ビル',
+ '㌲' => 'ファラッド',
+ '㌳' => 'フィート',
+ '㌴' => 'ブッシェル',
+ '㌵' => 'フラン',
+ '㌶' => 'ヘクタール',
+ '㌷' => 'ペソ',
+ '㌸' => 'ペニヒ',
+ '㌹' => 'ヘルツ',
+ '㌺' => 'ペンス',
+ '㌻' => 'ページ',
+ '㌼' => 'ベータ',
+ '㌽' => 'ポイント',
+ '㌾' => 'ボルト',
+ '㌿' => 'ホン',
+ '㍀' => 'ポンド',
+ '㍁' => 'ホール',
+ '㍂' => 'ホーン',
+ '㍃' => 'マイクロ',
+ '㍄' => 'マイル',
+ '㍅' => 'マッハ',
+ '㍆' => 'マルク',
+ '㍇' => 'マンション',
+ '㍈' => 'ミクロン',
+ '㍉' => 'ミリ',
+ '㍊' => 'ミリバール',
+ '㍋' => 'メガ',
+ '㍌' => 'メガトン',
+ '㍍' => 'メートル',
+ '㍎' => 'ヤード',
+ '㍏' => 'ヤール',
+ '㍐' => 'ユアン',
+ '㍑' => 'リットル',
+ '㍒' => 'リラ',
+ '㍓' => 'ルピー',
+ '㍔' => 'ルーブル',
+ '㍕' => 'レム',
+ '㍖' => 'レントゲン',
+ '㍗' => 'ワット',
+ '㍘' => '0点',
+ '㍙' => '1点',
+ '㍚' => '2点',
+ '㍛' => '3点',
+ '㍜' => '4点',
+ '㍝' => '5点',
+ '㍞' => '6点',
+ '㍟' => '7点',
+ '㍠' => '8点',
+ '㍡' => '9点',
+ '㍢' => '10点',
+ '㍣' => '11点',
+ '㍤' => '12点',
+ '㍥' => '13点',
+ '㍦' => '14点',
+ '㍧' => '15点',
+ '㍨' => '16点',
+ '㍩' => '17点',
+ '㍪' => '18点',
+ '㍫' => '19点',
+ '㍬' => '20点',
+ '㍭' => '21点',
+ '㍮' => '22点',
+ '㍯' => '23点',
+ '㍰' => '24点',
+ '㍱' => 'hPa',
+ '㍲' => 'da',
+ '㍳' => 'AU',
+ '㍴' => 'bar',
+ '㍵' => 'oV',
+ '㍶' => 'pc',
+ '㍷' => 'dm',
+ '㍸' => 'dm²',
+ '㍹' => 'dm³',
+ '㍺' => 'IU',
+ '㍻' => '平成',
+ '㍼' => '昭和',
+ '㍽' => '大正',
+ '㍾' => '明治',
+ '㍿' => '株式会社',
+ '㎀' => 'pA',
+ '㎁' => 'nA',
+ '㎂' => 'μA',
+ '㎃' => 'mA',
+ '㎄' => 'kA',
+ '㎅' => 'KB',
+ '㎆' => 'MB',
+ '㎇' => 'GB',
+ '㎈' => 'cal',
+ '㎉' => 'kcal',
+ '㎊' => 'pF',
+ '㎋' => 'nF',
+ '㎌' => 'μF',
+ '㎍' => 'μg',
+ '㎎' => 'mg',
+ '㎏' => 'kg',
+ '㎐' => 'Hz',
+ '㎑' => 'kHz',
+ '㎒' => 'MHz',
+ '㎓' => 'GHz',
+ '㎔' => 'THz',
+ '㎕' => 'μℓ',
+ '㎖' => 'mℓ',
+ '㎗' => 'dℓ',
+ '㎘' => 'kℓ',
+ '㎙' => 'fm',
+ '㎚' => 'nm',
+ '㎛' => 'μm',
+ '㎜' => 'mm',
+ '㎝' => 'cm',
+ '㎞' => 'km',
+ '㎟' => 'mm²',
+ '㎠' => 'cm²',
+ '㎡' => 'm²',
+ '㎢' => 'km²',
+ '㎣' => 'mm³',
+ '㎤' => 'cm³',
+ '㎥' => 'm³',
+ '㎦' => 'km³',
+ '㎧' => 'm∕s',
+ '㎨' => 'm∕s²',
+ '㎩' => 'Pa',
+ '㎪' => 'kPa',
+ '㎫' => 'MPa',
+ '㎬' => 'GPa',
+ '㎭' => 'rad',
+ '㎮' => 'rad∕s',
+ '㎯' => 'rad∕s²',
+ '㎰' => 'ps',
+ '㎱' => 'ns',
+ '㎲' => 'μs',
+ '㎳' => 'ms',
+ '㎴' => 'pV',
+ '㎵' => 'nV',
+ '㎶' => 'μV',
+ '㎷' => 'mV',
+ '㎸' => 'kV',
+ '㎹' => 'MV',
+ '㎺' => 'pW',
+ '㎻' => 'nW',
+ '㎼' => 'μW',
+ '㎽' => 'mW',
+ '㎾' => 'kW',
+ '㎿' => 'MW',
+ '㏀' => 'kΩ',
+ '㏁' => 'MΩ',
+ '㏂' => 'a.m.',
+ '㏃' => 'Bq',
+ '㏄' => 'cc',
+ '㏅' => 'cd',
+ '㏆' => 'C∕kg',
+ '㏇' => 'Co.',
+ '㏈' => 'dB',
+ '㏉' => 'Gy',
+ '㏊' => 'ha',
+ '㏋' => 'HP',
+ '㏌' => 'in',
+ '㏍' => 'KK',
+ '㏎' => 'KM',
+ '㏏' => 'kt',
+ '㏐' => 'lm',
+ '㏑' => 'ln',
+ '㏒' => 'log',
+ '㏓' => 'lx',
+ '㏔' => 'mb',
+ '㏕' => 'mil',
+ '㏖' => 'mol',
+ '㏗' => 'PH',
+ '㏘' => 'p.m.',
+ '㏙' => 'PPM',
+ '㏚' => 'PR',
+ '㏛' => 'sr',
+ '㏜' => 'Sv',
+ '㏝' => 'Wb',
+ '㏞' => 'V∕m',
+ '㏟' => 'A∕m',
+ '㏠' => '1日',
+ '㏡' => '2日',
+ '㏢' => '3日',
+ '㏣' => '4日',
+ '㏤' => '5日',
+ '㏥' => '6日',
+ '㏦' => '7日',
+ '㏧' => '8日',
+ '㏨' => '9日',
+ '㏩' => '10日',
+ '㏪' => '11日',
+ '㏫' => '12日',
+ '㏬' => '13日',
+ '㏭' => '14日',
+ '㏮' => '15日',
+ '㏯' => '16日',
+ '㏰' => '17日',
+ '㏱' => '18日',
+ '㏲' => '19日',
+ '㏳' => '20日',
+ '㏴' => '21日',
+ '㏵' => '22日',
+ '㏶' => '23日',
+ '㏷' => '24日',
+ '㏸' => '25日',
+ '㏹' => '26日',
+ '㏺' => '27日',
+ '㏻' => '28日',
+ '㏼' => '29日',
+ '㏽' => '30日',
+ '㏾' => '31日',
+ '㏿' => 'gal',
+ '豈' => '豈',
+ '更' => '更',
+ '車' => '車',
+ '賈' => '賈',
+ '滑' => '滑',
+ '串' => '串',
+ '句' => '句',
+ '龜' => '龜',
+ '龜' => '龜',
+ '契' => '契',
+ '金' => '金',
+ '喇' => '喇',
+ '奈' => '奈',
+ '懶' => '懶',
+ '癩' => '癩',
+ '羅' => '羅',
+ '蘿' => '蘿',
+ '螺' => '螺',
+ '裸' => '裸',
+ '邏' => '邏',
+ '樂' => '樂',
+ '洛' => '洛',
+ '烙' => '烙',
+ '珞' => '珞',
+ '落' => '落',
+ '酪' => '酪',
+ '駱' => '駱',
+ '亂' => '亂',
+ '卵' => '卵',
+ '欄' => '欄',
+ '爛' => '爛',
+ '蘭' => '蘭',
+ '鸞' => '鸞',
+ '嵐' => '嵐',
+ '濫' => '濫',
+ '藍' => '藍',
+ '襤' => '襤',
+ '拉' => '拉',
+ '臘' => '臘',
+ '蠟' => '蠟',
+ '廊' => '廊',
+ '朗' => '朗',
+ '浪' => '浪',
+ '狼' => '狼',
+ '郎' => '郎',
+ '來' => '來',
+ '冷' => '冷',
+ '勞' => '勞',
+ '擄' => '擄',
+ '櫓' => '櫓',
+ '爐' => '爐',
+ '盧' => '盧',
+ '老' => '老',
+ '蘆' => '蘆',
+ '虜' => '虜',
+ '路' => '路',
+ '露' => '露',
+ '魯' => '魯',
+ '鷺' => '鷺',
+ '碌' => '碌',
+ '祿' => '祿',
+ '綠' => '綠',
+ '菉' => '菉',
+ '錄' => '錄',
+ '鹿' => '鹿',
+ '論' => '論',
+ '壟' => '壟',
+ '弄' => '弄',
+ '籠' => '籠',
+ '聾' => '聾',
+ '牢' => '牢',
+ '磊' => '磊',
+ '賂' => '賂',
+ '雷' => '雷',
+ '壘' => '壘',
+ '屢' => '屢',
+ '樓' => '樓',
+ '淚' => '淚',
+ '漏' => '漏',
+ '累' => '累',
+ '縷' => '縷',
+ '陋' => '陋',
+ '勒' => '勒',
+ '肋' => '肋',
+ '凜' => '凜',
+ '凌' => '凌',
+ '稜' => '稜',
+ '綾' => '綾',
+ '菱' => '菱',
+ '陵' => '陵',
+ '讀' => '讀',
+ '拏' => '拏',
+ '樂' => '樂',
+ '諾' => '諾',
+ '丹' => '丹',
+ '寧' => '寧',
+ '怒' => '怒',
+ '率' => '率',
+ '異' => '異',
+ '北' => '北',
+ '磻' => '磻',
+ '便' => '便',
+ '復' => '復',
+ '不' => '不',
+ '泌' => '泌',
+ '數' => '數',
+ '索' => '索',
+ '參' => '參',
+ '塞' => '塞',
+ '省' => '省',
+ '葉' => '葉',
+ '說' => '說',
+ '殺' => '殺',
+ '辰' => '辰',
+ '沈' => '沈',
+ '拾' => '拾',
+ '若' => '若',
+ '掠' => '掠',
+ '略' => '略',
+ '亮' => '亮',
+ '兩' => '兩',
+ '凉' => '凉',
+ '梁' => '梁',
+ '糧' => '糧',
+ '良' => '良',
+ '諒' => '諒',
+ '量' => '量',
+ '勵' => '勵',
+ '呂' => '呂',
+ '女' => '女',
+ '廬' => '廬',
+ '旅' => '旅',
+ '濾' => '濾',
+ '礪' => '礪',
+ '閭' => '閭',
+ '驪' => '驪',
+ '麗' => '麗',
+ '黎' => '黎',
+ '力' => '力',
+ '曆' => '曆',
+ '歷' => '歷',
+ '轢' => '轢',
+ '年' => '年',
+ '憐' => '憐',
+ '戀' => '戀',
+ '撚' => '撚',
+ '漣' => '漣',
+ '煉' => '煉',
+ '璉' => '璉',
+ '秊' => '秊',
+ '練' => '練',
+ '聯' => '聯',
+ '輦' => '輦',
+ '蓮' => '蓮',
+ '連' => '連',
+ '鍊' => '鍊',
+ '列' => '列',
+ '劣' => '劣',
+ '咽' => '咽',
+ '烈' => '烈',
+ '裂' => '裂',
+ '說' => '說',
+ '廉' => '廉',
+ '念' => '念',
+ '捻' => '捻',
+ '殮' => '殮',
+ '簾' => '簾',
+ '獵' => '獵',
+ '令' => '令',
+ '囹' => '囹',
+ '寧' => '寧',
+ '嶺' => '嶺',
+ '怜' => '怜',
+ '玲' => '玲',
+ '瑩' => '瑩',
+ '羚' => '羚',
+ '聆' => '聆',
+ '鈴' => '鈴',
+ '零' => '零',
+ '靈' => '靈',
+ '領' => '領',
+ '例' => '例',
+ '禮' => '禮',
+ '醴' => '醴',
+ '隸' => '隸',
+ '惡' => '惡',
+ '了' => '了',
+ '僚' => '僚',
+ '寮' => '寮',
+ '尿' => '尿',
+ '料' => '料',
+ '樂' => '樂',
+ '燎' => '燎',
+ '療' => '療',
+ '蓼' => '蓼',
+ '遼' => '遼',
+ '龍' => '龍',
+ '暈' => '暈',
+ '阮' => '阮',
+ '劉' => '劉',
+ '杻' => '杻',
+ '柳' => '柳',
+ '流' => '流',
+ '溜' => '溜',
+ '琉' => '琉',
+ '留' => '留',
+ '硫' => '硫',
+ '紐' => '紐',
+ '類' => '類',
+ '六' => '六',
+ '戮' => '戮',
+ '陸' => '陸',
+ '倫' => '倫',
+ '崙' => '崙',
+ '淪' => '淪',
+ '輪' => '輪',
+ '律' => '律',
+ '慄' => '慄',
+ '栗' => '栗',
+ '率' => '率',
+ '隆' => '隆',
+ '利' => '利',
+ '吏' => '吏',
+ '履' => '履',
+ '易' => '易',
+ '李' => '李',
+ '梨' => '梨',
+ '泥' => '泥',
+ '理' => '理',
+ '痢' => '痢',
+ '罹' => '罹',
+ '裏' => '裏',
+ '裡' => '裡',
+ '里' => '里',
+ '離' => '離',
+ '匿' => '匿',
+ '溺' => '溺',
+ '吝' => '吝',
+ '燐' => '燐',
+ '璘' => '璘',
+ '藺' => '藺',
+ '隣' => '隣',
+ '鱗' => '鱗',
+ '麟' => '麟',
+ '林' => '林',
+ '淋' => '淋',
+ '臨' => '臨',
+ '立' => '立',
+ '笠' => '笠',
+ '粒' => '粒',
+ '狀' => '狀',
+ '炙' => '炙',
+ '識' => '識',
+ '什' => '什',
+ '茶' => '茶',
+ '刺' => '刺',
+ '切' => '切',
+ '度' => '度',
+ '拓' => '拓',
+ '糖' => '糖',
+ '宅' => '宅',
+ '洞' => '洞',
+ '暴' => '暴',
+ '輻' => '輻',
+ '行' => '行',
+ '降' => '降',
+ '見' => '見',
+ '廓' => '廓',
+ '兀' => '兀',
+ '嗀' => '嗀',
+ '﨎' => ' ',
+ '﨏' => ' ',
+ '塚' => '塚',
+ '﨑' => ' ',
+ '晴' => '晴',
+ '﨓' => ' ',
+ '﨔' => ' ',
+ '凞' => '凞',
+ '猪' => '猪',
+ '益' => '益',
+ '礼' => '礼',
+ '神' => '神',
+ '祥' => '祥',
+ '福' => '福',
+ '靖' => '靖',
+ '精' => '精',
+ '羽' => '羽',
+ '﨟' => ' ',
+ '蘒' => '蘒',
+ '﨡' => ' ',
+ '諸' => '諸',
+ '﨣' => ' ',
+ '﨤' => ' ',
+ '逸' => '逸',
+ '都' => '都',
+ '﨧' => ' ',
+ '﨨' => ' ',
+ '﨩' => ' ',
+ '飯' => '飯',
+ '飼' => '飼',
+ '館' => '館',
+ '鶴' => '鶴',
+ '郞' => '郞',
+ '隷' => '隷',
+ '侮' => '侮',
+ '僧' => '僧',
+ '免' => '免',
+ '勉' => '勉',
+ '勤' => '勤',
+ '卑' => '卑',
+ '喝' => '喝',
+ '嘆' => '嘆',
+ '器' => '器',
+ '塀' => '塀',
+ '墨' => '墨',
+ '層' => '層',
+ '屮' => '屮',
+ '悔' => '悔',
+ '慨' => '慨',
+ '憎' => '憎',
+ '懲' => '懲',
+ '敏' => '敏',
+ '既' => '既',
+ '暑' => '暑',
+ '梅' => '梅',
+ '海' => '海',
+ '渚' => '渚',
+ '漢' => '漢',
+ '煮' => '煮',
+ '爫' => '爫',
+ '琢' => '琢',
+ '碑' => '碑',
+ '社' => '社',
+ '祉' => '祉',
+ '祈' => '祈',
+ '祐' => '祐',
+ '祖' => '祖',
+ '祝' => '祝',
+ '禍' => '禍',
+ '禎' => '禎',
+ '穀' => '穀',
+ '突' => '突',
+ '節' => '節',
+ '練' => '練',
+ '縉' => '縉',
+ '繁' => '繁',
+ '署' => '署',
+ '者' => '者',
+ '臭' => '臭',
+ '艹' => '艹',
+ '艹' => '艹',
+ '著' => '著',
+ '褐' => '褐',
+ '視' => '視',
+ '謁' => '謁',
+ '謹' => '謹',
+ '賓' => '賓',
+ '贈' => '贈',
+ '辶' => '辶',
+ '逸' => '逸',
+ '難' => '難',
+ '響' => '響',
+ '頻' => '頻',
+ '恵' => '恵',
+ '𤋮' => '𤋮',
+ '舘' => '舘',
+ '並' => '並',
+ '况' => '况',
+ '全' => '全',
+ '侀' => '侀',
+ '充' => '充',
+ '冀' => '冀',
+ '勇' => '勇',
+ '勺' => '勺',
+ '喝' => '喝',
+ '啕' => '啕',
+ '喙' => '喙',
+ '嗢' => '嗢',
+ '塚' => '塚',
+ '墳' => '墳',
+ '奄' => '奄',
+ '奔' => '奔',
+ '婢' => '婢',
+ '嬨' => '嬨',
+ '廒' => '廒',
+ '廙' => '廙',
+ '彩' => '彩',
+ '徭' => '徭',
+ '惘' => '惘',
+ '慎' => '慎',
+ '愈' => '愈',
+ '憎' => '憎',
+ '慠' => '慠',
+ '懲' => '懲',
+ '戴' => '戴',
+ '揄' => '揄',
+ '搜' => '搜',
+ '摒' => '摒',
+ '敖' => '敖',
+ '晴' => '晴',
+ '朗' => '朗',
+ '望' => '望',
+ '杖' => '杖',
+ '歹' => '歹',
+ '殺' => '殺',
+ '流' => '流',
+ '滛' => '滛',
+ '滋' => '滋',
+ '漢' => '漢',
+ '瀞' => '瀞',
+ '煮' => '煮',
+ '瞧' => '瞧',
+ '爵' => '爵',
+ '犯' => '犯',
+ '猪' => '猪',
+ '瑱' => '瑱',
+ '甆' => '甆',
+ '画' => '画',
+ '瘝' => '瘝',
+ '瘟' => '瘟',
+ '益' => '益',
+ '盛' => '盛',
+ '直' => '直',
+ '睊' => '睊',
+ '着' => '着',
+ '磌' => '磌',
+ '窱' => '窱',
+ '節' => '節',
+ '类' => '类',
+ '絛' => '絛',
+ '練' => '練',
+ '缾' => '缾',
+ '者' => '者',
+ '荒' => '荒',
+ '華' => '華',
+ '蝹' => '蝹',
+ '襁' => '襁',
+ '覆' => '覆',
+ '視' => '視',
+ '調' => '調',
+ '諸' => '諸',
+ '請' => '請',
+ '謁' => '謁',
+ '諾' => '諾',
+ '諭' => '諭',
+ '謹' => '謹',
+ '變' => '變',
+ '贈' => '贈',
+ '輸' => '輸',
+ '遲' => '遲',
+ '醙' => '醙',
+ '鉶' => '鉶',
+ '陼' => '陼',
+ '難' => '難',
+ '靖' => '靖',
+ '韛' => '韛',
+ '響' => '響',
+ '頋' => '頋',
+ '頻' => '頻',
+ '鬒' => '鬒',
+ '龜' => '龜',
+ '𢡊' => '𢡊',
+ '𢡄' => '𢡄',
+ '𣏕' => '𣏕',
+ '㮝' => '㮝',
+ '䀘' => '䀘',
+ '䀹' => '䀹',
+ '𥉉' => '𥉉',
+ '𥳐' => '𥳐',
+ '𧻓' => '𧻓',
+ '齃' => '齃',
+ '龎' => '龎',
+ 'ff' => 'ff',
+ 'fi' => 'fi',
+ 'fl' => 'fl',
+ 'ffi' => 'ffi',
+ 'ffl' => 'ffl',
+ 'ſt' => 'ſt',
+ 'st' => 'st',
+ 'ﬓ' => 'մն',
+ 'ﬔ' => 'մե',
+ 'ﬕ' => 'մի',
+ 'ﬖ' => 'վն',
+ 'ﬗ' => 'մխ',
+ 'ﬠ' => 'ע',
+ 'ﬡ' => 'א',
+ 'ﬢ' => 'ד',
+ 'ﬣ' => 'ה',
+ 'ﬤ' => 'כ',
+ 'ﬥ' => 'ל',
+ 'ﬦ' => 'ם',
+ 'ﬧ' => 'ר',
+ 'ﬨ' => 'ת',
+ '﬩' => '+',
+ 'ﭏ' => 'אל',
+ '﹉' => '‾',
+ '﹊' => '‾',
+ '﹋' => '‾',
+ '﹌' => '‾',
+ '﹍' => '_',
+ '﹎' => '_',
+ '﹏' => '_',
+ '﹐' => ',',
+ '﹑' => '、',
+ '﹒' => '.',
+ '﹔' => ';',
+ '﹕' => ':',
+ '﹖' => '?',
+ '﹗' => '!',
+ '﹘' => '—',
+ '﹙' => '(',
+ '﹚' => ')',
+ '﹛' => '{',
+ '﹜' => '}',
+ '﹝' => '〔',
+ '﹞' => '〕',
+ '﹟' => '#',
+ '﹠' => '&',
+ '﹡' => '*',
+ '﹢' => '+',
+ '﹣' => '-',
+ '﹤' => '<',
+ '﹥' => '>',
+ '﹦' => '=',
+ '﹨' => '\\',
+ '﹩' => '$',
+ '﹪' => '%',
+ '﹫' => '@',
+ '!' => '!',
+ '"' => '"',
+ '#' => '#',
+ '$' => '$',
+ '%' => '%',
+ '&' => '&',
+ ''' => '\'',
+ '(' => '(',
+ ')' => ')',
+ '*' => '*',
+ '+' => '+',
+ ',' => ',',
+ '-' => '-',
+ '.' => '.',
+ '/' => '/',
+ '0' => '0',
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ '7' => '7',
+ '8' => '8',
+ '9' => '9',
+ ':' => ':',
+ ';' => ';',
+ '<' => '<',
+ '=' => '=',
+ '>' => '>',
+ '?' => '?',
+ '@' => '@',
+ 'A' => 'A',
+ 'B' => 'B',
+ 'C' => 'C',
+ 'D' => 'D',
+ 'E' => 'E',
+ 'F' => 'F',
+ 'G' => 'G',
+ 'H' => 'H',
+ 'I' => 'I',
+ 'J' => 'J',
+ 'K' => 'K',
+ 'L' => 'L',
+ 'M' => 'M',
+ 'N' => 'N',
+ 'O' => 'O',
+ 'P' => 'P',
+ 'Q' => 'Q',
+ 'R' => 'R',
+ 'S' => 'S',
+ 'T' => 'T',
+ 'U' => 'U',
+ 'V' => 'V',
+ 'W' => 'W',
+ 'X' => 'X',
+ 'Y' => 'Y',
+ 'Z' => 'Z',
+ '[' => '[',
+ '\' => '\\',
+ ']' => ']',
+ '^' => '^',
+ '_' => '_',
+ '`' => '`',
+ 'a' => 'a',
+ 'b' => 'b',
+ 'c' => 'c',
+ 'd' => 'd',
+ 'e' => 'e',
+ 'f' => 'f',
+ 'g' => 'g',
+ 'h' => 'h',
+ 'i' => 'i',
+ 'j' => 'j',
+ 'k' => 'k',
+ 'l' => 'l',
+ 'm' => 'm',
+ 'n' => 'n',
+ 'o' => 'o',
+ 'p' => 'p',
+ 'q' => 'q',
+ 'r' => 'r',
+ 's' => 's',
+ 't' => 't',
+ 'u' => 'u',
+ 'v' => 'v',
+ 'w' => 'w',
+ 'x' => 'x',
+ 'y' => 'y',
+ 'z' => 'z',
+ '{' => '{',
+ '|' => '|',
+ '}' => '}',
+ '~' => '~',
+ '⦅' => '⦅',
+ '⦆' => '⦆',
+ '。' => '。',
+ '「' => '「',
+ '」' => '」',
+ '、' => '、',
+ '・' => '・',
+ 'ヲ' => 'ヲ',
+ 'ァ' => 'ァ',
+ 'ィ' => 'ィ',
+ 'ゥ' => 'ゥ',
+ 'ェ' => 'ェ',
+ 'ォ' => 'ォ',
+ 'ャ' => 'ャ',
+ 'ュ' => 'ュ',
+ 'ョ' => 'ョ',
+ 'ッ' => 'ッ',
+ 'ー' => 'ー',
+ 'ア' => 'ア',
+ 'イ' => 'イ',
+ 'ウ' => 'ウ',
+ 'エ' => 'エ',
+ 'オ' => 'オ',
+ 'カ' => 'カ',
+ 'キ' => 'キ',
+ 'ク' => 'ク',
+ 'ケ' => 'ケ',
+ 'コ' => 'コ',
+ 'サ' => 'サ',
+ 'シ' => 'シ',
+ 'ス' => 'ス',
+ 'セ' => 'セ',
+ 'ソ' => 'ソ',
+ 'タ' => 'タ',
+ 'チ' => 'チ',
+ 'ツ' => 'ツ',
+ 'テ' => 'テ',
+ 'ト' => 'ト',
+ 'ナ' => 'ナ',
+ 'ニ' => 'ニ',
+ 'ヌ' => 'ヌ',
+ 'ネ' => 'ネ',
+ 'ノ' => 'ノ',
+ 'ハ' => 'ハ',
+ 'ヒ' => 'ヒ',
+ 'フ' => 'フ',
+ 'ヘ' => 'ヘ',
+ 'ホ' => 'ホ',
+ 'マ' => 'マ',
+ 'ミ' => 'ミ',
+ 'ム' => 'ム',
+ 'メ' => 'メ',
+ 'モ' => 'モ',
+ 'ヤ' => 'ヤ',
+ 'ユ' => 'ユ',
+ 'ヨ' => 'ヨ',
+ 'ラ' => 'ラ',
+ 'リ' => 'リ',
+ 'ル' => 'ル',
+ 'レ' => 'レ',
+ 'ロ' => 'ロ',
+ 'ワ' => 'ワ',
+ 'ン' => 'ン',
+ '゙' => '゙',
+ '゚' => '゚',
+ 'ᅠ' => 'ㅤ',
+ 'ᄀ' => 'ㄱ',
+ 'ᄁ' => 'ㄲ',
+ 'ᆪ' => 'ㄳ',
+ 'ᄂ' => 'ㄴ',
+ 'ᆬ' => 'ㄵ',
+ 'ᆭ' => 'ㄶ',
+ 'ᄃ' => 'ㄷ',
+ 'ᄄ' => 'ㄸ',
+ 'ᄅ' => 'ㄹ',
+ 'ᆰ' => 'ㄺ',
+ 'ᆱ' => 'ㄻ',
+ 'ᆲ' => 'ㄼ',
+ 'ᆳ' => 'ㄽ',
+ 'ᆴ' => 'ㄾ',
+ 'ᆵ' => 'ㄿ',
+ 'ᄚ' => 'ㅀ',
+ 'ᄆ' => 'ㅁ',
+ 'ᄇ' => 'ㅂ',
+ 'ᄈ' => 'ㅃ',
+ 'ᄡ' => 'ㅄ',
+ 'ᄉ' => 'ㅅ',
+ 'ᄊ' => 'ㅆ',
+ 'ᄋ' => 'ㅇ',
+ 'ᄌ' => 'ㅈ',
+ 'ᄍ' => 'ㅉ',
+ 'ᄎ' => 'ㅊ',
+ 'ᄏ' => 'ㅋ',
+ 'ᄐ' => 'ㅌ',
+ 'ᄑ' => 'ㅍ',
+ 'ᄒ' => 'ㅎ',
+ 'ᅡ' => 'ㅏ',
+ 'ᅢ' => 'ㅐ',
+ 'ᅣ' => 'ㅑ',
+ 'ᅤ' => 'ㅒ',
+ 'ᅥ' => 'ㅓ',
+ 'ᅦ' => 'ㅔ',
+ 'ᅧ' => 'ㅕ',
+ 'ᅨ' => 'ㅖ',
+ 'ᅩ' => 'ㅗ',
+ 'ᅪ' => 'ㅘ',
+ 'ᅫ' => 'ㅙ',
+ 'ᅬ' => 'ㅚ',
+ 'ᅭ' => 'ㅛ',
+ 'ᅮ' => 'ㅜ',
+ 'ᅯ' => 'ㅝ',
+ 'ᅰ' => 'ㅞ',
+ 'ᅱ' => 'ㅟ',
+ 'ᅲ' => 'ㅠ',
+ 'ᅳ' => 'ㅡ',
+ 'ᅴ' => 'ㅢ',
+ 'ᅵ' => 'ㅣ',
+ '¢' => '¢',
+ '£' => '£',
+ '¬' => '¬',
+ ' ̄' => '¯',
+ '¦' => '¦',
+ '¥' => '¥',
+ '₩' => '₩',
+ '│' => '│',
+ '←' => '←',
+ '↑' => '↑',
+ '→' => '→',
+ '↓' => '↓',
+ '■' => '■',
+ '○' => '○',
+ '𝐀' => 'A',
+ '𝐁' => 'B',
+ '𝐂' => 'C',
+ '𝐃' => 'D',
+ '𝐄' => 'E',
+ '𝐅' => 'F',
+ '𝐆' => 'G',
+ '𝐇' => 'H',
+ '𝐈' => 'I',
+ '𝐉' => 'J',
+ '𝐊' => 'K',
+ '𝐋' => 'L',
+ '𝐌' => 'M',
+ '𝐍' => 'N',
+ '𝐎' => 'O',
+ '𝐏' => 'P',
+ '𝐐' => 'Q',
+ '𝐑' => 'R',
+ '𝐒' => 'S',
+ '𝐓' => 'T',
+ '𝐔' => 'U',
+ '𝐕' => 'V',
+ '𝐖' => 'W',
+ '𝐗' => 'X',
+ '𝐘' => 'Y',
+ '𝐙' => 'Z',
+ '𝐚' => 'a',
+ '𝐛' => 'b',
+ '𝐜' => 'c',
+ '𝐝' => 'd',
+ '𝐞' => 'e',
+ '𝐟' => 'f',
+ '𝐠' => 'g',
+ '𝐡' => 'h',
+ '𝐢' => 'i',
+ '𝐣' => 'j',
+ '𝐤' => 'k',
+ '𝐥' => 'l',
+ '𝐦' => 'm',
+ '𝐧' => 'n',
+ '𝐨' => 'o',
+ '𝐩' => 'p',
+ '𝐪' => 'q',
+ '𝐫' => 'r',
+ '𝐬' => 's',
+ '𝐭' => 't',
+ '𝐮' => 'u',
+ '𝐯' => 'v',
+ '𝐰' => 'w',
+ '𝐱' => 'x',
+ '𝐲' => 'y',
+ '𝐳' => 'z',
+ '𝐴' => 'A',
+ '𝐵' => 'B',
+ '𝐶' => 'C',
+ '𝐷' => 'D',
+ '𝐸' => 'E',
+ '𝐹' => 'F',
+ '𝐺' => 'G',
+ '𝐻' => 'H',
+ '𝐼' => 'I',
+ '𝐽' => 'J',
+ '𝐾' => 'K',
+ '𝐿' => 'L',
+ '𝑀' => 'M',
+ '𝑁' => 'N',
+ '𝑂' => 'O',
+ '𝑃' => 'P',
+ '𝑄' => 'Q',
+ '𝑅' => 'R',
+ '𝑆' => 'S',
+ '𝑇' => 'T',
+ '𝑈' => 'U',
+ '𝑉' => 'V',
+ '𝑊' => 'W',
+ '𝑋' => 'X',
+ '𝑌' => 'Y',
+ '𝑍' => 'Z',
+ '𝑎' => 'a',
+ '𝑏' => 'b',
+ '𝑐' => 'c',
+ '𝑑' => 'd',
+ '𝑒' => 'e',
+ '𝑓' => 'f',
+ '𝑔' => 'g',
+ '𝑖' => 'i',
+ '𝑗' => 'j',
+ '𝑘' => 'k',
+ '𝑙' => 'l',
+ '𝑚' => 'm',
+ '𝑛' => 'n',
+ '𝑜' => 'o',
+ '𝑝' => 'p',
+ '𝑞' => 'q',
+ '𝑟' => 'r',
+ '𝑠' => 's',
+ '𝑡' => 't',
+ '𝑢' => 'u',
+ '𝑣' => 'v',
+ '𝑤' => 'w',
+ '𝑥' => 'x',
+ '𝑦' => 'y',
+ '𝑧' => 'z',
+ '𝑨' => 'A',
+ '𝑩' => 'B',
+ '𝑪' => 'C',
+ '𝑫' => 'D',
+ '𝑬' => 'E',
+ '𝑭' => 'F',
+ '𝑮' => 'G',
+ '𝑯' => 'H',
+ '𝑰' => 'I',
+ '𝑱' => 'J',
+ '𝑲' => 'K',
+ '𝑳' => 'L',
+ '𝑴' => 'M',
+ '𝑵' => 'N',
+ '𝑶' => 'O',
+ '𝑷' => 'P',
+ '𝑸' => 'Q',
+ '𝑹' => 'R',
+ '𝑺' => 'S',
+ '𝑻' => 'T',
+ '𝑼' => 'U',
+ '𝑽' => 'V',
+ '𝑾' => 'W',
+ '𝑿' => 'X',
+ '𝒀' => 'Y',
+ '𝒁' => 'Z',
+ '𝒂' => 'a',
+ '𝒃' => 'b',
+ '𝒄' => 'c',
+ '𝒅' => 'd',
+ '𝒆' => 'e',
+ '𝒇' => 'f',
+ '𝒈' => 'g',
+ '𝒉' => 'h',
+ '𝒊' => 'i',
+ '𝒋' => 'j',
+ '𝒌' => 'k',
+ '𝒍' => 'l',
+ '𝒎' => 'm',
+ '𝒏' => 'n',
+ '𝒐' => 'o',
+ '𝒑' => 'p',
+ '𝒒' => 'q',
+ '𝒓' => 'r',
+ '𝒔' => 's',
+ '𝒕' => 't',
+ '𝒖' => 'u',
+ '𝒗' => 'v',
+ '𝒘' => 'w',
+ '𝒙' => 'x',
+ '𝒚' => 'y',
+ '𝒛' => 'z',
+ '𝒜' => 'A',
+ '𝒞' => 'C',
+ '𝒟' => 'D',
+ '𝒢' => 'G',
+ '𝒥' => 'J',
+ '𝒦' => 'K',
+ '𝒩' => 'N',
+ '𝒪' => 'O',
+ '𝒫' => 'P',
+ '𝒬' => 'Q',
+ '𝒮' => 'S',
+ '𝒯' => 'T',
+ '𝒰' => 'U',
+ '𝒱' => 'V',
+ '𝒲' => 'W',
+ '𝒳' => 'X',
+ '𝒴' => 'Y',
+ '𝒵' => 'Z',
+ '𝒶' => 'a',
+ '𝒷' => 'b',
+ '𝒸' => 'c',
+ '𝒹' => 'd',
+ '𝒻' => 'f',
+ '𝒽' => 'h',
+ '𝒾' => 'i',
+ '𝒿' => 'j',
+ '𝓀' => 'k',
+ '𝓁' => 'l',
+ '𝓂' => 'm',
+ '𝓃' => 'n',
+ '𝓅' => 'p',
+ '𝓆' => 'q',
+ '𝓇' => 'r',
+ '𝓈' => 's',
+ '𝓉' => 't',
+ '𝓊' => 'u',
+ '𝓋' => 'v',
+ '𝓌' => 'w',
+ '𝓍' => 'x',
+ '𝓎' => 'y',
+ '𝓏' => 'z',
+ '𝓐' => 'A',
+ '𝓑' => 'B',
+ '𝓒' => 'C',
+ '𝓓' => 'D',
+ '𝓔' => 'E',
+ '𝓕' => 'F',
+ '𝓖' => 'G',
+ '𝓗' => 'H',
+ '𝓘' => 'I',
+ '𝓙' => 'J',
+ '𝓚' => 'K',
+ '𝓛' => 'L',
+ '𝓜' => 'M',
+ '𝓝' => 'N',
+ '𝓞' => 'O',
+ '𝓟' => 'P',
+ '𝓠' => 'Q',
+ '𝓡' => 'R',
+ '𝓢' => 'S',
+ '𝓣' => 'T',
+ '𝓤' => 'U',
+ '𝓥' => 'V',
+ '𝓦' => 'W',
+ '𝓧' => 'X',
+ '𝓨' => 'Y',
+ '𝓩' => 'Z',
+ '𝓪' => 'a',
+ '𝓫' => 'b',
+ '𝓬' => 'c',
+ '𝓭' => 'd',
+ '𝓮' => 'e',
+ '𝓯' => 'f',
+ '𝓰' => 'g',
+ '𝓱' => 'h',
+ '𝓲' => 'i',
+ '𝓳' => 'j',
+ '𝓴' => 'k',
+ '𝓵' => 'l',
+ '𝓶' => 'm',
+ '𝓷' => 'n',
+ '𝓸' => 'o',
+ '𝓹' => 'p',
+ '𝓺' => 'q',
+ '𝓻' => 'r',
+ '𝓼' => 's',
+ '𝓽' => 't',
+ '𝓾' => 'u',
+ '𝓿' => 'v',
+ '𝔀' => 'w',
+ '𝔁' => 'x',
+ '𝔂' => 'y',
+ '𝔃' => 'z',
+ '𝔄' => 'A',
+ '𝔅' => 'B',
+ '𝔇' => 'D',
+ '𝔈' => 'E',
+ '𝔉' => 'F',
+ '𝔊' => 'G',
+ '𝔍' => 'J',
+ '𝔎' => 'K',
+ '𝔏' => 'L',
+ '𝔐' => 'M',
+ '𝔑' => 'N',
+ '𝔒' => 'O',
+ '𝔓' => 'P',
+ '𝔔' => 'Q',
+ '𝔖' => 'S',
+ '𝔗' => 'T',
+ '𝔘' => 'U',
+ '𝔙' => 'V',
+ '𝔚' => 'W',
+ '𝔛' => 'X',
+ '𝔜' => 'Y',
+ '𝔞' => 'a',
+ '𝔟' => 'b',
+ '𝔠' => 'c',
+ '𝔡' => 'd',
+ '𝔢' => 'e',
+ '𝔣' => 'f',
+ '𝔤' => 'g',
+ '𝔥' => 'h',
+ '𝔦' => 'i',
+ '𝔧' => 'j',
+ '𝔨' => 'k',
+ '𝔩' => 'l',
+ '𝔪' => 'm',
+ '𝔫' => 'n',
+ '𝔬' => 'o',
+ '𝔭' => 'p',
+ '𝔮' => 'q',
+ '𝔯' => 'r',
+ '𝔰' => 's',
+ '𝔱' => 't',
+ '𝔲' => 'u',
+ '𝔳' => 'v',
+ '𝔴' => 'w',
+ '𝔵' => 'x',
+ '𝔶' => 'y',
+ '𝔷' => 'z',
+ '𝔸' => 'A',
+ '𝔹' => 'B',
+ '𝔻' => 'D',
+ '𝔼' => 'E',
+ '𝔽' => 'F',
+ '𝔾' => 'G',
+ '𝕀' => 'I',
+ '𝕁' => 'J',
+ '𝕂' => 'K',
+ '𝕃' => 'L',
+ '𝕄' => 'M',
+ '𝕆' => 'O',
+ '𝕊' => 'S',
+ '𝕋' => 'T',
+ '𝕌' => 'U',
+ '𝕍' => 'V',
+ '𝕎' => 'W',
+ '𝕏' => 'X',
+ '𝕐' => 'Y',
+ '𝕒' => 'a',
+ '𝕓' => 'b',
+ '𝕔' => 'c',
+ '𝕕' => 'd',
+ '𝕖' => 'e',
+ '𝕗' => 'f',
+ '𝕘' => 'g',
+ '𝕙' => 'h',
+ '𝕚' => 'i',
+ '𝕛' => 'j',
+ '𝕜' => 'k',
+ '𝕝' => 'l',
+ '𝕞' => 'm',
+ '𝕟' => 'n',
+ '𝕠' => 'o',
+ '𝕡' => 'p',
+ '𝕢' => 'q',
+ '𝕣' => 'r',
+ '𝕤' => 's',
+ '𝕥' => 't',
+ '𝕦' => 'u',
+ '𝕧' => 'v',
+ '𝕨' => 'w',
+ '𝕩' => 'x',
+ '𝕪' => 'y',
+ '𝕫' => 'z',
+ '𝕬' => 'A',
+ '𝕭' => 'B',
+ '𝕮' => 'C',
+ '𝕯' => 'D',
+ '𝕰' => 'E',
+ '𝕱' => 'F',
+ '𝕲' => 'G',
+ '𝕳' => 'H',
+ '𝕴' => 'I',
+ '𝕵' => 'J',
+ '𝕶' => 'K',
+ '𝕷' => 'L',
+ '𝕸' => 'M',
+ '𝕹' => 'N',
+ '𝕺' => 'O',
+ '𝕻' => 'P',
+ '𝕼' => 'Q',
+ '𝕽' => 'R',
+ '𝕾' => 'S',
+ '𝕿' => 'T',
+ '𝖀' => 'U',
+ '𝖁' => 'V',
+ '𝖂' => 'W',
+ '𝖃' => 'X',
+ '𝖄' => 'Y',
+ '𝖅' => 'Z',
+ '𝖆' => 'a',
+ '𝖇' => 'b',
+ '𝖈' => 'c',
+ '𝖉' => 'd',
+ '𝖊' => 'e',
+ '𝖋' => 'f',
+ '𝖌' => 'g',
+ '𝖍' => 'h',
+ '𝖎' => 'i',
+ '𝖏' => 'j',
+ '𝖐' => 'k',
+ '𝖑' => 'l',
+ '𝖒' => 'm',
+ '𝖓' => 'n',
+ '𝖔' => 'o',
+ '𝖕' => 'p',
+ '𝖖' => 'q',
+ '𝖗' => 'r',
+ '𝖘' => 's',
+ '𝖙' => 't',
+ '𝖚' => 'u',
+ '𝖛' => 'v',
+ '𝖜' => 'w',
+ '𝖝' => 'x',
+ '𝖞' => 'y',
+ '𝖟' => 'z',
+ '𝖠' => 'A',
+ '𝖡' => 'B',
+ '𝖢' => 'C',
+ '𝖣' => 'D',
+ '𝖤' => 'E',
+ '𝖥' => 'F',
+ '𝖦' => 'G',
+ '𝖧' => 'H',
+ '𝖨' => 'I',
+ '𝖩' => 'J',
+ '𝖪' => 'K',
+ '𝖫' => 'L',
+ '𝖬' => 'M',
+ '𝖭' => 'N',
+ '𝖮' => 'O',
+ '𝖯' => 'P',
+ '𝖰' => 'Q',
+ '𝖱' => 'R',
+ '𝖲' => 'S',
+ '𝖳' => 'T',
+ '𝖴' => 'U',
+ '𝖵' => 'V',
+ '𝖶' => 'W',
+ '𝖷' => 'X',
+ '𝖸' => 'Y',
+ '𝖹' => 'Z',
+ '𝖺' => 'a',
+ '𝖻' => 'b',
+ '𝖼' => 'c',
+ '𝖽' => 'd',
+ '𝖾' => 'e',
+ '𝖿' => 'f',
+ '𝗀' => 'g',
+ '𝗁' => 'h',
+ '𝗂' => 'i',
+ '𝗃' => 'j',
+ '𝗄' => 'k',
+ '𝗅' => 'l',
+ '𝗆' => 'm',
+ '𝗇' => 'n',
+ '𝗈' => 'o',
+ '𝗉' => 'p',
+ '𝗊' => 'q',
+ '𝗋' => 'r',
+ '𝗌' => 's',
+ '𝗍' => 't',
+ '𝗎' => 'u',
+ '𝗏' => 'v',
+ '𝗐' => 'w',
+ '𝗑' => 'x',
+ '𝗒' => 'y',
+ '𝗓' => 'z',
+ '𝗔' => 'A',
+ '𝗕' => 'B',
+ '𝗖' => 'C',
+ '𝗗' => 'D',
+ '𝗘' => 'E',
+ '𝗙' => 'F',
+ '𝗚' => 'G',
+ '𝗛' => 'H',
+ '𝗜' => 'I',
+ '𝗝' => 'J',
+ '𝗞' => 'K',
+ '𝗟' => 'L',
+ '𝗠' => 'M',
+ '𝗡' => 'N',
+ '𝗢' => 'O',
+ '𝗣' => 'P',
+ '𝗤' => 'Q',
+ '𝗥' => 'R',
+ '𝗦' => 'S',
+ '𝗧' => 'T',
+ '𝗨' => 'U',
+ '𝗩' => 'V',
+ '𝗪' => 'W',
+ '𝗫' => 'X',
+ '𝗬' => 'Y',
+ '𝗭' => 'Z',
+ '𝗮' => 'a',
+ '𝗯' => 'b',
+ '𝗰' => 'c',
+ '𝗱' => 'd',
+ '𝗲' => 'e',
+ '𝗳' => 'f',
+ '𝗴' => 'g',
+ '𝗵' => 'h',
+ '𝗶' => 'i',
+ '𝗷' => 'j',
+ '𝗸' => 'k',
+ '𝗹' => 'l',
+ '𝗺' => 'm',
+ '𝗻' => 'n',
+ '𝗼' => 'o',
+ '𝗽' => 'p',
+ '𝗾' => 'q',
+ '𝗿' => 'r',
+ '𝘀' => 's',
+ '𝘁' => 't',
+ '𝘂' => 'u',
+ '𝘃' => 'v',
+ '𝘄' => 'w',
+ '𝘅' => 'x',
+ '𝘆' => 'y',
+ '𝘇' => 'z',
+ '𝘈' => 'A',
+ '𝘉' => 'B',
+ '𝘊' => 'C',
+ '𝘋' => 'D',
+ '𝘌' => 'E',
+ '𝘍' => 'F',
+ '𝘎' => 'G',
+ '𝘏' => 'H',
+ '𝘐' => 'I',
+ '𝘑' => 'J',
+ '𝘒' => 'K',
+ '𝘓' => 'L',
+ '𝘔' => 'M',
+ '𝘕' => 'N',
+ '𝘖' => 'O',
+ '𝘗' => 'P',
+ '𝘘' => 'Q',
+ '𝘙' => 'R',
+ '𝘚' => 'S',
+ '𝘛' => 'T',
+ '𝘜' => 'U',
+ '𝘝' => 'V',
+ '𝘞' => 'W',
+ '𝘟' => 'X',
+ '𝘠' => 'Y',
+ '𝘡' => 'Z',
+ '𝘢' => 'a',
+ '𝘣' => 'b',
+ '𝘤' => 'c',
+ '𝘥' => 'd',
+ '𝘦' => 'e',
+ '𝘧' => 'f',
+ '𝘨' => 'g',
+ '𝘩' => 'h',
+ '𝘪' => 'i',
+ '𝘫' => 'j',
+ '𝘬' => 'k',
+ '𝘭' => 'l',
+ '𝘮' => 'm',
+ '𝘯' => 'n',
+ '𝘰' => 'o',
+ '𝘱' => 'p',
+ '𝘲' => 'q',
+ '𝘳' => 'r',
+ '𝘴' => 's',
+ '𝘵' => 't',
+ '𝘶' => 'u',
+ '𝘷' => 'v',
+ '𝘸' => 'w',
+ '𝘹' => 'x',
+ '𝘺' => 'y',
+ '𝘻' => 'z',
+ '𝘼' => 'A',
+ '𝘽' => 'B',
+ '𝘾' => 'C',
+ '𝘿' => 'D',
+ '𝙀' => 'E',
+ '𝙁' => 'F',
+ '𝙂' => 'G',
+ '𝙃' => 'H',
+ '𝙄' => 'I',
+ '𝙅' => 'J',
+ '𝙆' => 'K',
+ '𝙇' => 'L',
+ '𝙈' => 'M',
+ '𝙉' => 'N',
+ '𝙊' => 'O',
+ '𝙋' => 'P',
+ '𝙌' => 'Q',
+ '𝙍' => 'R',
+ '𝙎' => 'S',
+ '𝙏' => 'T',
+ '𝙐' => 'U',
+ '𝙑' => 'V',
+ '𝙒' => 'W',
+ '𝙓' => 'X',
+ '𝙔' => 'Y',
+ '𝙕' => 'Z',
+ '𝙖' => 'a',
+ '𝙗' => 'b',
+ '𝙘' => 'c',
+ '𝙙' => 'd',
+ '𝙚' => 'e',
+ '𝙛' => 'f',
+ '𝙜' => 'g',
+ '𝙝' => 'h',
+ '𝙞' => 'i',
+ '𝙟' => 'j',
+ '𝙠' => 'k',
+ '𝙡' => 'l',
+ '𝙢' => 'm',
+ '𝙣' => 'n',
+ '𝙤' => 'o',
+ '𝙥' => 'p',
+ '𝙦' => 'q',
+ '𝙧' => 'r',
+ '𝙨' => 's',
+ '𝙩' => 't',
+ '𝙪' => 'u',
+ '𝙫' => 'v',
+ '𝙬' => 'w',
+ '𝙭' => 'x',
+ '𝙮' => 'y',
+ '𝙯' => 'z',
+ '𝙰' => 'A',
+ '𝙱' => 'B',
+ '𝙲' => 'C',
+ '𝙳' => 'D',
+ '𝙴' => 'E',
+ '𝙵' => 'F',
+ '𝙶' => 'G',
+ '𝙷' => 'H',
+ '𝙸' => 'I',
+ '𝙹' => 'J',
+ '𝙺' => 'K',
+ '𝙻' => 'L',
+ '𝙼' => 'M',
+ '𝙽' => 'N',
+ '𝙾' => 'O',
+ '𝙿' => 'P',
+ '𝚀' => 'Q',
+ '𝚁' => 'R',
+ '𝚂' => 'S',
+ '𝚃' => 'T',
+ '𝚄' => 'U',
+ '𝚅' => 'V',
+ '𝚆' => 'W',
+ '𝚇' => 'X',
+ '𝚈' => 'Y',
+ '𝚉' => 'Z',
+ '𝚊' => 'a',
+ '𝚋' => 'b',
+ '𝚌' => 'c',
+ '𝚍' => 'd',
+ '𝚎' => 'e',
+ '𝚏' => 'f',
+ '𝚐' => 'g',
+ '𝚑' => 'h',
+ '𝚒' => 'i',
+ '𝚓' => 'j',
+ '𝚔' => 'k',
+ '𝚕' => 'l',
+ '𝚖' => 'm',
+ '𝚗' => 'n',
+ '𝚘' => 'o',
+ '𝚙' => 'p',
+ '𝚚' => 'q',
+ '𝚛' => 'r',
+ '𝚜' => 's',
+ '𝚝' => 't',
+ '𝚞' => 'u',
+ '𝚟' => 'v',
+ '𝚠' => 'w',
+ '𝚡' => 'x',
+ '𝚢' => 'y',
+ '𝚣' => 'z',
+ '𝚤' => 'ı',
+ '𝚥' => 'ȷ',
+ '𝚨' => 'Α',
+ '𝚩' => 'Β',
+ '𝚪' => 'Γ',
+ '𝚫' => 'Δ',
+ '𝚬' => 'Ε',
+ '𝚭' => 'Ζ',
+ '𝚮' => 'Η',
+ '𝚯' => 'Θ',
+ '𝚰' => 'Ι',
+ '𝚱' => 'Κ',
+ '𝚲' => 'Λ',
+ '𝚳' => 'Μ',
+ '𝚴' => 'Ν',
+ '𝚵' => 'Ξ',
+ '𝚶' => 'Ο',
+ '𝚷' => 'Π',
+ '𝚸' => 'Ρ',
+ '𝚹' => 'ϴ',
+ '𝚺' => 'Σ',
+ '𝚻' => 'Τ',
+ '𝚼' => 'Υ',
+ '𝚽' => 'Φ',
+ '𝚾' => 'Χ',
+ '𝚿' => 'Ψ',
+ '𝛀' => 'Ω',
+ '𝛁' => '∇',
+ '𝛂' => 'α',
+ '𝛃' => 'β',
+ '𝛄' => 'γ',
+ '𝛅' => 'δ',
+ '𝛆' => 'ε',
+ '𝛇' => 'ζ',
+ '𝛈' => 'η',
+ '𝛉' => 'θ',
+ '𝛊' => 'ι',
+ '𝛋' => 'κ',
+ '𝛌' => 'λ',
+ '𝛍' => 'μ',
+ '𝛎' => 'ν',
+ '𝛏' => 'ξ',
+ '𝛐' => 'ο',
+ '𝛑' => 'π',
+ '𝛒' => 'ρ',
+ '𝛓' => 'ς',
+ '𝛔' => 'σ',
+ '𝛕' => 'τ',
+ '𝛖' => 'υ',
+ '𝛗' => 'φ',
+ '𝛘' => 'χ',
+ '𝛙' => 'ψ',
+ '𝛚' => 'ω',
+ '𝛛' => '∂',
+ '𝛜' => 'ϵ',
+ '𝛝' => 'ϑ',
+ '𝛞' => 'ϰ',
+ '𝛟' => 'ϕ',
+ '𝛠' => 'ϱ',
+ '𝛡' => 'ϖ',
+ '𝛢' => 'Α',
+ '𝛣' => 'Β',
+ '𝛤' => 'Γ',
+ '𝛥' => 'Δ',
+ '𝛦' => 'Ε',
+ '𝛧' => 'Ζ',
+ '𝛨' => 'Η',
+ '𝛩' => 'Θ',
+ '𝛪' => 'Ι',
+ '𝛫' => 'Κ',
+ '𝛬' => 'Λ',
+ '𝛭' => 'Μ',
+ '𝛮' => 'Ν',
+ '𝛯' => 'Ξ',
+ '𝛰' => 'Ο',
+ '𝛱' => 'Π',
+ '𝛲' => 'Ρ',
+ '𝛳' => 'ϴ',
+ '𝛴' => 'Σ',
+ '𝛵' => 'Τ',
+ '𝛶' => 'Υ',
+ '𝛷' => 'Φ',
+ '𝛸' => 'Χ',
+ '𝛹' => 'Ψ',
+ '𝛺' => 'Ω',
+ '𝛻' => '∇',
+ '𝛼' => 'α',
+ '𝛽' => 'β',
+ '𝛾' => 'γ',
+ '𝛿' => 'δ',
+ '𝜀' => 'ε',
+ '𝜁' => 'ζ',
+ '𝜂' => 'η',
+ '𝜃' => 'θ',
+ '𝜄' => 'ι',
+ '𝜅' => 'κ',
+ '𝜆' => 'λ',
+ '𝜇' => 'μ',
+ '𝜈' => 'ν',
+ '𝜉' => 'ξ',
+ '𝜊' => 'ο',
+ '𝜋' => 'π',
+ '𝜌' => 'ρ',
+ '𝜍' => 'ς',
+ '𝜎' => 'σ',
+ '𝜏' => 'τ',
+ '𝜐' => 'υ',
+ '𝜑' => 'φ',
+ '𝜒' => 'χ',
+ '𝜓' => 'ψ',
+ '𝜔' => 'ω',
+ '𝜕' => '∂',
+ '𝜖' => 'ϵ',
+ '𝜗' => 'ϑ',
+ '𝜘' => 'ϰ',
+ '𝜙' => 'ϕ',
+ '𝜚' => 'ϱ',
+ '𝜛' => 'ϖ',
+ '𝜜' => 'Α',
+ '𝜝' => 'Β',
+ '𝜞' => 'Γ',
+ '𝜟' => 'Δ',
+ '𝜠' => 'Ε',
+ '𝜡' => 'Ζ',
+ '𝜢' => 'Η',
+ '𝜣' => 'Θ',
+ '𝜤' => 'Ι',
+ '𝜥' => 'Κ',
+ '𝜦' => 'Λ',
+ '𝜧' => 'Μ',
+ '𝜨' => 'Ν',
+ '𝜩' => 'Ξ',
+ '𝜪' => 'Ο',
+ '𝜫' => 'Π',
+ '𝜬' => 'Ρ',
+ '𝜭' => 'ϴ',
+ '𝜮' => 'Σ',
+ '𝜯' => 'Τ',
+ '𝜰' => 'Υ',
+ '𝜱' => 'Φ',
+ '𝜲' => 'Χ',
+ '𝜳' => 'Ψ',
+ '𝜴' => 'Ω',
+ '𝜵' => '∇',
+ '𝜶' => 'α',
+ '𝜷' => 'β',
+ '𝜸' => 'γ',
+ '𝜹' => 'δ',
+ '𝜺' => 'ε',
+ '𝜻' => 'ζ',
+ '𝜼' => 'η',
+ '𝜽' => 'θ',
+ '𝜾' => 'ι',
+ '𝜿' => 'κ',
+ '𝝀' => 'λ',
+ '𝝁' => 'μ',
+ '𝝂' => 'ν',
+ '𝝃' => 'ξ',
+ '𝝄' => 'ο',
+ '𝝅' => 'π',
+ '𝝆' => 'ρ',
+ '𝝇' => 'ς',
+ '𝝈' => 'σ',
+ '𝝉' => 'τ',
+ '𝝊' => 'υ',
+ '𝝋' => 'φ',
+ '𝝌' => 'χ',
+ '𝝍' => 'ψ',
+ '𝝎' => 'ω',
+ '𝝏' => '∂',
+ '𝝐' => 'ϵ',
+ '𝝑' => 'ϑ',
+ '𝝒' => 'ϰ',
+ '𝝓' => 'ϕ',
+ '𝝔' => 'ϱ',
+ '𝝕' => 'ϖ',
+ '𝝖' => 'Α',
+ '𝝗' => 'Β',
+ '𝝘' => 'Γ',
+ '𝝙' => 'Δ',
+ '𝝚' => 'Ε',
+ '𝝛' => 'Ζ',
+ '𝝜' => 'Η',
+ '𝝝' => 'Θ',
+ '𝝞' => 'Ι',
+ '𝝟' => 'Κ',
+ '𝝠' => 'Λ',
+ '𝝡' => 'Μ',
+ '𝝢' => 'Ν',
+ '𝝣' => 'Ξ',
+ '𝝤' => 'Ο',
+ '𝝥' => 'Π',
+ '𝝦' => 'Ρ',
+ '𝝧' => 'ϴ',
+ '𝝨' => 'Σ',
+ '𝝩' => 'Τ',
+ '𝝪' => 'Υ',
+ '𝝫' => 'Φ',
+ '𝝬' => 'Χ',
+ '𝝭' => 'Ψ',
+ '𝝮' => 'Ω',
+ '𝝯' => '∇',
+ '𝝰' => 'α',
+ '𝝱' => 'β',
+ '𝝲' => 'γ',
+ '𝝳' => 'δ',
+ '𝝴' => 'ε',
+ '𝝵' => 'ζ',
+ '𝝶' => 'η',
+ '𝝷' => 'θ',
+ '𝝸' => 'ι',
+ '𝝹' => 'κ',
+ '𝝺' => 'λ',
+ '𝝻' => 'μ',
+ '𝝼' => 'ν',
+ '𝝽' => 'ξ',
+ '𝝾' => 'ο',
+ '𝝿' => 'π',
+ '𝞀' => 'ρ',
+ '𝞁' => 'ς',
+ '𝞂' => 'σ',
+ '𝞃' => 'τ',
+ '𝞄' => 'υ',
+ '𝞅' => 'φ',
+ '𝞆' => 'χ',
+ '𝞇' => 'ψ',
+ '𝞈' => 'ω',
+ '𝞉' => '∂',
+ '𝞊' => 'ϵ',
+ '𝞋' => 'ϑ',
+ '𝞌' => 'ϰ',
+ '𝞍' => 'ϕ',
+ '𝞎' => 'ϱ',
+ '𝞏' => 'ϖ',
+ '𝞐' => 'Α',
+ '𝞑' => 'Β',
+ '𝞒' => 'Γ',
+ '𝞓' => 'Δ',
+ '𝞔' => 'Ε',
+ '𝞕' => 'Ζ',
+ '𝞖' => 'Η',
+ '𝞗' => 'Θ',
+ '𝞘' => 'Ι',
+ '𝞙' => 'Κ',
+ '𝞚' => 'Λ',
+ '𝞛' => 'Μ',
+ '𝞜' => 'Ν',
+ '𝞝' => 'Ξ',
+ '𝞞' => 'Ο',
+ '𝞟' => 'Π',
+ '𝞠' => 'Ρ',
+ '𝞡' => 'ϴ',
+ '𝞢' => 'Σ',
+ '𝞣' => 'Τ',
+ '𝞤' => 'Υ',
+ '𝞥' => 'Φ',
+ '𝞦' => 'Χ',
+ '𝞧' => 'Ψ',
+ '𝞨' => 'Ω',
+ '𝞩' => '∇',
+ '𝞪' => 'α',
+ '𝞫' => 'β',
+ '𝞬' => 'γ',
+ '𝞭' => 'δ',
+ '𝞮' => 'ε',
+ '𝞯' => 'ζ',
+ '𝞰' => 'η',
+ '𝞱' => 'θ',
+ '𝞲' => 'ι',
+ '𝞳' => 'κ',
+ '𝞴' => 'λ',
+ '𝞵' => 'μ',
+ '𝞶' => 'ν',
+ '𝞷' => 'ξ',
+ '𝞸' => 'ο',
+ '𝞹' => 'π',
+ '𝞺' => 'ρ',
+ '𝞻' => 'ς',
+ '𝞼' => 'σ',
+ '𝞽' => 'τ',
+ '𝞾' => 'υ',
+ '𝞿' => 'φ',
+ '𝟀' => 'χ',
+ '𝟁' => 'ψ',
+ '𝟂' => 'ω',
+ '𝟃' => '∂',
+ '𝟄' => 'ϵ',
+ '𝟅' => 'ϑ',
+ '𝟆' => 'ϰ',
+ '𝟇' => 'ϕ',
+ '𝟈' => 'ϱ',
+ '𝟉' => 'ϖ',
+ '𝟊' => 'Ϝ',
+ '𝟋' => 'ϝ',
+ '𝟎' => '0',
+ '𝟏' => '1',
+ '𝟐' => '2',
+ '𝟑' => '3',
+ '𝟒' => '4',
+ '𝟓' => '5',
+ '𝟔' => '6',
+ '𝟕' => '7',
+ '𝟖' => '8',
+ '𝟗' => '9',
+ '𝟘' => '0',
+ '𝟙' => '1',
+ '𝟚' => '2',
+ '𝟛' => '3',
+ '𝟜' => '4',
+ '𝟝' => '5',
+ '𝟞' => '6',
+ '𝟟' => '7',
+ '𝟠' => '8',
+ '𝟡' => '9',
+ '𝟢' => '0',
+ '𝟣' => '1',
+ '𝟤' => '2',
+ '𝟥' => '3',
+ '𝟦' => '4',
+ '𝟧' => '5',
+ '𝟨' => '6',
+ '𝟩' => '7',
+ '𝟪' => '8',
+ '𝟫' => '9',
+ '𝟬' => '0',
+ '𝟭' => '1',
+ '𝟮' => '2',
+ '𝟯' => '3',
+ '𝟰' => '4',
+ '𝟱' => '5',
+ '𝟲' => '6',
+ '𝟳' => '7',
+ '𝟴' => '8',
+ '𝟵' => '9',
+ '𝟶' => '0',
+ '𝟷' => '1',
+ '𝟸' => '2',
+ '𝟹' => '3',
+ '𝟺' => '4',
+ '𝟻' => '5',
+ '𝟼' => '6',
+ '𝟽' => '7',
+ '𝟾' => '8',
+ '𝟿' => '9',
+ '𞸀' => 'ا',
+ '𞸁' => 'ب',
+ '𞸂' => 'ج',
+ '𞸃' => 'د',
+ '𞸅' => 'و',
+ '𞸆' => 'ز',
+ '𞸇' => 'ح',
+ '𞸈' => 'ط',
+ '𞸉' => 'ي',
+ '𞸊' => 'ك',
+ '𞸋' => 'ل',
+ '𞸌' => 'م',
+ '𞸍' => 'ن',
+ '𞸎' => 'س',
+ '𞸏' => 'ع',
+ '𞸐' => 'ف',
+ '𞸑' => 'ص',
+ '𞸒' => 'ق',
+ '𞸓' => 'ر',
+ '𞸔' => 'ش',
+ '𞸕' => 'ت',
+ '𞸖' => 'ث',
+ '𞸗' => 'خ',
+ '𞸘' => 'ذ',
+ '𞸙' => 'ض',
+ '𞸚' => 'ظ',
+ '𞸛' => 'غ',
+ '𞸜' => 'ٮ',
+ '𞸝' => 'ں',
+ '𞸞' => 'ڡ',
+ '𞸟' => 'ٯ',
+ '𞸡' => 'ب',
+ '𞸢' => 'ج',
+ '𞸤' => 'ه',
+ '𞸧' => 'ح',
+ '𞸩' => 'ي',
+ '𞸪' => 'ك',
+ '𞸫' => 'ل',
+ '𞸬' => 'م',
+ '𞸭' => 'ن',
+ '𞸮' => 'س',
+ '𞸯' => 'ع',
+ '𞸰' => 'ف',
+ '𞸱' => 'ص',
+ '𞸲' => 'ق',
+ '𞸴' => 'ش',
+ '𞸵' => 'ت',
+ '𞸶' => 'ث',
+ '𞸷' => 'خ',
+ '𞸹' => 'ض',
+ '𞸻' => 'غ',
+ '𞹂' => 'ج',
+ '𞹇' => 'ح',
+ '𞹉' => 'ي',
+ '𞹋' => 'ل',
+ '𞹍' => 'ن',
+ '𞹎' => 'س',
+ '𞹏' => 'ع',
+ '𞹑' => 'ص',
+ '𞹒' => 'ق',
+ '𞹔' => 'ش',
+ '𞹗' => 'خ',
+ '𞹙' => 'ض',
+ '𞹛' => 'غ',
+ '𞹝' => 'ں',
+ '𞹟' => 'ٯ',
+ '𞹡' => 'ب',
+ '𞹢' => 'ج',
+ '𞹤' => 'ه',
+ '𞹧' => 'ح',
+ '𞹨' => 'ط',
+ '𞹩' => 'ي',
+ '𞹪' => 'ك',
+ '𞹬' => 'م',
+ '𞹭' => 'ن',
+ '𞹮' => 'س',
+ '𞹯' => 'ع',
+ '𞹰' => 'ف',
+ '𞹱' => 'ص',
+ '𞹲' => 'ق',
+ '𞹴' => 'ش',
+ '𞹵' => 'ت',
+ '𞹶' => 'ث',
+ '𞹷' => 'خ',
+ '𞹹' => 'ض',
+ '𞹺' => 'ظ',
+ '𞹻' => 'غ',
+ '𞹼' => 'ٮ',
+ '𞹾' => 'ڡ',
+ '𞺀' => 'ا',
+ '𞺁' => 'ب',
+ '𞺂' => 'ج',
+ '𞺃' => 'د',
+ '𞺄' => 'ه',
+ '𞺅' => 'و',
+ '𞺆' => 'ز',
+ '𞺇' => 'ح',
+ '𞺈' => 'ط',
+ '𞺉' => 'ي',
+ '𞺋' => 'ل',
+ '𞺌' => 'م',
+ '𞺍' => 'ن',
+ '𞺎' => 'س',
+ '𞺏' => 'ع',
+ '𞺐' => 'ف',
+ '𞺑' => 'ص',
+ '𞺒' => 'ق',
+ '𞺓' => 'ر',
+ '𞺔' => 'ش',
+ '𞺕' => 'ت',
+ '𞺖' => 'ث',
+ '𞺗' => 'خ',
+ '𞺘' => 'ذ',
+ '𞺙' => 'ض',
+ '𞺚' => 'ظ',
+ '𞺛' => 'غ',
+ '𞺡' => 'ب',
+ '𞺢' => 'ج',
+ '𞺣' => 'د',
+ '𞺥' => 'و',
+ '𞺦' => 'ز',
+ '𞺧' => 'ح',
+ '𞺨' => 'ط',
+ '𞺩' => 'ي',
+ '𞺫' => 'ل',
+ '𞺬' => 'م',
+ '𞺭' => 'ن',
+ '𞺮' => 'س',
+ '𞺯' => 'ع',
+ '𞺰' => 'ف',
+ '𞺱' => 'ص',
+ '𞺲' => 'ق',
+ '𞺳' => 'ر',
+ '𞺴' => 'ش',
+ '𞺵' => 'ت',
+ '𞺶' => 'ث',
+ '𞺷' => 'خ',
+ '𞺸' => 'ذ',
+ '𞺹' => 'ض',
+ '𞺺' => 'ظ',
+ '𞺻' => 'غ',
+ '🄀' => '0.',
+ '🄁' => '0,',
+ '🄂' => '1,',
+ '🄃' => '2,',
+ '🄄' => '3,',
+ '🄅' => '4,',
+ '🄆' => '5,',
+ '🄇' => '6,',
+ '🄈' => '7,',
+ '🄉' => '8,',
+ '🄊' => '9,',
+ '🄐' => '(A)',
+ '🄑' => '(B)',
+ '🄒' => '(C)',
+ '🄓' => '(D)',
+ '🄔' => '(E)',
+ '🄕' => '(F)',
+ '🄖' => '(G)',
+ '🄗' => '(H)',
+ '🄘' => '(I)',
+ '🄙' => '(J)',
+ '🄚' => '(K)',
+ '🄛' => '(L)',
+ '🄜' => '(M)',
+ '🄝' => '(N)',
+ '🄞' => '(O)',
+ '🄟' => '(P)',
+ '🄠' => '(Q)',
+ '🄡' => '(R)',
+ '🄢' => '(S)',
+ '🄣' => '(T)',
+ '🄤' => '(U)',
+ '🄥' => '(V)',
+ '🄦' => '(W)',
+ '🄧' => '(X)',
+ '🄨' => '(Y)',
+ '🄩' => '(Z)',
+ '🄪' => '〔S〕',
+ '🄫' => '(C)',
+ '🄬' => '(R)',
+ '🄭' => '(CD)',
+ '🄮' => '(WZ)',
+ '🄰' => 'A',
+ '🄱' => 'B',
+ '🄲' => 'C',
+ '🄳' => 'D',
+ '🄴' => 'E',
+ '🄵' => 'F',
+ '🄶' => 'G',
+ '🄷' => 'H',
+ '🄸' => 'I',
+ '🄹' => 'J',
+ '🄺' => 'K',
+ '🄻' => 'L',
+ '🄼' => 'M',
+ '🄽' => 'N',
+ '🄾' => 'O',
+ '🄿' => 'P',
+ '🅀' => 'Q',
+ '🅁' => 'R',
+ '🅂' => 'S',
+ '🅃' => 'T',
+ '🅄' => 'U',
+ '🅅' => 'V',
+ '🅆' => 'W',
+ '🅇' => 'X',
+ '🅈' => 'Y',
+ '🅉' => 'Z',
+ '🅊' => 'HV',
+ '🅋' => 'MV',
+ '🅌' => 'SD',
+ '🅍' => 'SS',
+ '🅎' => 'PPV',
+ '🅏' => 'WC',
+ '🆐' => 'DJ',
+ '🈀' => 'ほか',
+ '🈁' => 'ココ',
+ '🈂' => 'サ',
+ '🈐' => '手',
+ '🈑' => '字',
+ '🈒' => '双',
+ '🈓' => 'デ',
+ '🈔' => '二',
+ '🈕' => '多',
+ '🈖' => '解',
+ '🈗' => '天',
+ '🈘' => '交',
+ '🈙' => '映',
+ '🈚' => '無',
+ '🈛' => '料',
+ '🈜' => '前',
+ '🈝' => '後',
+ '🈞' => '再',
+ '🈟' => '新',
+ '🈠' => '初',
+ '🈡' => '終',
+ '🈢' => '生',
+ '🈣' => '販',
+ '🈤' => '声',
+ '🈥' => '吹',
+ '🈦' => '演',
+ '🈧' => '投',
+ '🈨' => '捕',
+ '🈩' => '一',
+ '🈪' => '三',
+ '🈫' => '遊',
+ '🈬' => '左',
+ '🈭' => '中',
+ '🈮' => '右',
+ '🈯' => '指',
+ '🈰' => '走',
+ '🈱' => '打',
+ '🈲' => '禁',
+ '🈳' => '空',
+ '🈴' => '合',
+ '🈵' => '満',
+ '🈶' => '有',
+ '🈷' => '月',
+ '🈸' => '申',
+ '🈹' => '割',
+ '🈺' => '営',
+ '🉀' => '〔本〕',
+ '🉁' => '〔三〕',
+ '🉂' => '〔二〕',
+ '🉃' => '〔安〕',
+ '🉄' => '〔点〕',
+ '🉅' => '〔打〕',
+ '🉆' => '〔盗〕',
+ '🉇' => '〔勝〕',
+ '🉈' => '〔敗〕',
+ '🉐' => '(得)',
+ '🉑' => '(可)',
+ '丽' => '丽',
+ '丸' => '丸',
+ '乁' => '乁',
+ '𠄢' => '𠄢',
+ '你' => '你',
+ '侮' => '侮',
+ '侻' => '侻',
+ '倂' => '倂',
+ '偺' => '偺',
+ '備' => '備',
+ '僧' => '僧',
+ '像' => '像',
+ '㒞' => '㒞',
+ '𠘺' => '𠘺',
+ '免' => '免',
+ '兔' => '兔',
+ '兤' => '兤',
+ '具' => '具',
+ '𠔜' => '𠔜',
+ '㒹' => '㒹',
+ '內' => '內',
+ '再' => '再',
+ '𠕋' => '𠕋',
+ '冗' => '冗',
+ '冤' => '冤',
+ '仌' => '仌',
+ '冬' => '冬',
+ '况' => '况',
+ '𩇟' => '𩇟',
+ '凵' => '凵',
+ '刃' => '刃',
+ '㓟' => '㓟',
+ '刻' => '刻',
+ '剆' => '剆',
+ '割' => '割',
+ '剷' => '剷',
+ '㔕' => '㔕',
+ '勇' => '勇',
+ '勉' => '勉',
+ '勤' => '勤',
+ '勺' => '勺',
+ '包' => '包',
+ '匆' => '匆',
+ '北' => '北',
+ '卉' => '卉',
+ '卑' => '卑',
+ '博' => '博',
+ '即' => '即',
+ '卽' => '卽',
+ '卿' => '卿',
+ '卿' => '卿',
+ '卿' => '卿',
+ '𠨬' => '𠨬',
+ '灰' => '灰',
+ '及' => '及',
+ '叟' => '叟',
+ '𠭣' => '𠭣',
+ '叫' => '叫',
+ '叱' => '叱',
+ '吆' => '吆',
+ '咞' => '咞',
+ '吸' => '吸',
+ '呈' => '呈',
+ '周' => '周',
+ '咢' => '咢',
+ '哶' => '哶',
+ '唐' => '唐',
+ '啓' => '啓',
+ '啣' => '啣',
+ '善' => '善',
+ '善' => '善',
+ '喙' => '喙',
+ '喫' => '喫',
+ '喳' => '喳',
+ '嗂' => '嗂',
+ '圖' => '圖',
+ '嘆' => '嘆',
+ '圗' => '圗',
+ '噑' => '噑',
+ '噴' => '噴',
+ '切' => '切',
+ '壮' => '壮',
+ '城' => '城',
+ '埴' => '埴',
+ '堍' => '堍',
+ '型' => '型',
+ '堲' => '堲',
+ '報' => '報',
+ '墬' => '墬',
+ '𡓤' => '𡓤',
+ '売' => '売',
+ '壷' => '壷',
+ '夆' => '夆',
+ '多' => '多',
+ '夢' => '夢',
+ '奢' => '奢',
+ '𡚨' => '𡚨',
+ '𡛪' => '𡛪',
+ '姬' => '姬',
+ '娛' => '娛',
+ '娧' => '娧',
+ '姘' => '姘',
+ '婦' => '婦',
+ '㛮' => '㛮',
+ '㛼' => '㛼',
+ '嬈' => '嬈',
+ '嬾' => '嬾',
+ '嬾' => '嬾',
+ '𡧈' => '𡧈',
+ '寃' => '寃',
+ '寘' => '寘',
+ '寧' => '寧',
+ '寳' => '寳',
+ '𡬘' => '𡬘',
+ '寿' => '寿',
+ '将' => '将',
+ '当' => '当',
+ '尢' => '尢',
+ '㞁' => '㞁',
+ '屠' => '屠',
+ '屮' => '屮',
+ '峀' => '峀',
+ '岍' => '岍',
+ '𡷤' => '𡷤',
+ '嵃' => '嵃',
+ '𡷦' => '𡷦',
+ '嵮' => '嵮',
+ '嵫' => '嵫',
+ '嵼' => '嵼',
+ '巡' => '巡',
+ '巢' => '巢',
+ '㠯' => '㠯',
+ '巽' => '巽',
+ '帨' => '帨',
+ '帽' => '帽',
+ '幩' => '幩',
+ '㡢' => '㡢',
+ '𢆃' => '𢆃',
+ '㡼' => '㡼',
+ '庰' => '庰',
+ '庳' => '庳',
+ '庶' => '庶',
+ '廊' => '廊',
+ '𪎒' => '𪎒',
+ '廾' => '廾',
+ '𢌱' => '𢌱',
+ '𢌱' => '𢌱',
+ '舁' => '舁',
+ '弢' => '弢',
+ '弢' => '弢',
+ '㣇' => '㣇',
+ '𣊸' => '𣊸',
+ '𦇚' => '𦇚',
+ '形' => '形',
+ '彫' => '彫',
+ '㣣' => '㣣',
+ '徚' => '徚',
+ '忍' => '忍',
+ '志' => '志',
+ '忹' => '忹',
+ '悁' => '悁',
+ '㤺' => '㤺',
+ '㤜' => '㤜',
+ '悔' => '悔',
+ '𢛔' => '𢛔',
+ '惇' => '惇',
+ '慈' => '慈',
+ '慌' => '慌',
+ '慎' => '慎',
+ '慌' => '慌',
+ '慺' => '慺',
+ '憎' => '憎',
+ '憲' => '憲',
+ '憤' => '憤',
+ '憯' => '憯',
+ '懞' => '懞',
+ '懲' => '懲',
+ '懶' => '懶',
+ '成' => '成',
+ '戛' => '戛',
+ '扝' => '扝',
+ '抱' => '抱',
+ '拔' => '拔',
+ '捐' => '捐',
+ '𢬌' => '𢬌',
+ '挽' => '挽',
+ '拼' => '拼',
+ '捨' => '捨',
+ '掃' => '掃',
+ '揤' => '揤',
+ '𢯱' => '𢯱',
+ '搢' => '搢',
+ '揅' => '揅',
+ '掩' => '掩',
+ '㨮' => '㨮',
+ '摩' => '摩',
+ '摾' => '摾',
+ '撝' => '撝',
+ '摷' => '摷',
+ '㩬' => '㩬',
+ '敏' => '敏',
+ '敬' => '敬',
+ '𣀊' => '𣀊',
+ '旣' => '旣',
+ '書' => '書',
+ '晉' => '晉',
+ '㬙' => '㬙',
+ '暑' => '暑',
+ '㬈' => '㬈',
+ '㫤' => '㫤',
+ '冒' => '冒',
+ '冕' => '冕',
+ '最' => '最',
+ '暜' => '暜',
+ '肭' => '肭',
+ '䏙' => '䏙',
+ '朗' => '朗',
+ '望' => '望',
+ '朡' => '朡',
+ '杞' => '杞',
+ '杓' => '杓',
+ '𣏃' => '𣏃',
+ '㭉' => '㭉',
+ '柺' => '柺',
+ '枅' => '枅',
+ '桒' => '桒',
+ '梅' => '梅',
+ '𣑭' => '𣑭',
+ '梎' => '梎',
+ '栟' => '栟',
+ '椔' => '椔',
+ '㮝' => '㮝',
+ '楂' => '楂',
+ '榣' => '榣',
+ '槪' => '槪',
+ '檨' => '檨',
+ '𣚣' => '𣚣',
+ '櫛' => '櫛',
+ '㰘' => '㰘',
+ '次' => '次',
+ '𣢧' => '𣢧',
+ '歔' => '歔',
+ '㱎' => '㱎',
+ '歲' => '歲',
+ '殟' => '殟',
+ '殺' => '殺',
+ '殻' => '殻',
+ '𣪍' => '𣪍',
+ '𡴋' => '𡴋',
+ '𣫺' => '𣫺',
+ '汎' => '汎',
+ '𣲼' => '𣲼',
+ '沿' => '沿',
+ '泍' => '泍',
+ '汧' => '汧',
+ '洖' => '洖',
+ '派' => '派',
+ '海' => '海',
+ '流' => '流',
+ '浩' => '浩',
+ '浸' => '浸',
+ '涅' => '涅',
+ '𣴞' => '𣴞',
+ '洴' => '洴',
+ '港' => '港',
+ '湮' => '湮',
+ '㴳' => '㴳',
+ '滋' => '滋',
+ '滇' => '滇',
+ '𣻑' => '𣻑',
+ '淹' => '淹',
+ '潮' => '潮',
+ '𣽞' => '𣽞',
+ '𣾎' => '𣾎',
+ '濆' => '濆',
+ '瀹' => '瀹',
+ '瀞' => '瀞',
+ '瀛' => '瀛',
+ '㶖' => '㶖',
+ '灊' => '灊',
+ '災' => '災',
+ '灷' => '灷',
+ '炭' => '炭',
+ '𠔥' => '𠔥',
+ '煅' => '煅',
+ '𤉣' => '𤉣',
+ '熜' => '熜',
+ '𤎫' => '𤎫',
+ '爨' => '爨',
+ '爵' => '爵',
+ '牐' => '牐',
+ '𤘈' => '𤘈',
+ '犀' => '犀',
+ '犕' => '犕',
+ '𤜵' => '𤜵',
+ '𤠔' => '𤠔',
+ '獺' => '獺',
+ '王' => '王',
+ '㺬' => '㺬',
+ '玥' => '玥',
+ '㺸' => '㺸',
+ '㺸' => '㺸',
+ '瑇' => '瑇',
+ '瑜' => '瑜',
+ '瑱' => '瑱',
+ '璅' => '璅',
+ '瓊' => '瓊',
+ '㼛' => '㼛',
+ '甤' => '甤',
+ '𤰶' => '𤰶',
+ '甾' => '甾',
+ '𤲒' => '𤲒',
+ '異' => '異',
+ '𢆟' => '𢆟',
+ '瘐' => '瘐',
+ '𤾡' => '𤾡',
+ '𤾸' => '𤾸',
+ '𥁄' => '𥁄',
+ '㿼' => '㿼',
+ '䀈' => '䀈',
+ '直' => '直',
+ '𥃳' => '𥃳',
+ '𥃲' => '𥃲',
+ '𥄙' => '𥄙',
+ '𥄳' => '𥄳',
+ '眞' => '眞',
+ '真' => '真',
+ '真' => '真',
+ '睊' => '睊',
+ '䀹' => '䀹',
+ '瞋' => '瞋',
+ '䁆' => '䁆',
+ '䂖' => '䂖',
+ '𥐝' => '𥐝',
+ '硎' => '硎',
+ '碌' => '碌',
+ '磌' => '磌',
+ '䃣' => '䃣',
+ '𥘦' => '𥘦',
+ '祖' => '祖',
+ '𥚚' => '𥚚',
+ '𥛅' => '𥛅',
+ '福' => '福',
+ '秫' => '秫',
+ '䄯' => '䄯',
+ '穀' => '穀',
+ '穊' => '穊',
+ '穏' => '穏',
+ '𥥼' => '𥥼',
+ '𥪧' => '𥪧',
+ '𥪧' => '𥪧',
+ '竮' => '竮',
+ '䈂' => '䈂',
+ '𥮫' => '𥮫',
+ '篆' => '篆',
+ '築' => '築',
+ '䈧' => '䈧',
+ '𥲀' => '𥲀',
+ '糒' => '糒',
+ '䊠' => '䊠',
+ '糨' => '糨',
+ '糣' => '糣',
+ '紀' => '紀',
+ '𥾆' => '𥾆',
+ '絣' => '絣',
+ '䌁' => '䌁',
+ '緇' => '緇',
+ '縂' => '縂',
+ '繅' => '繅',
+ '䌴' => '䌴',
+ '𦈨' => '𦈨',
+ '𦉇' => '𦉇',
+ '䍙' => '䍙',
+ '𦋙' => '𦋙',
+ '罺' => '罺',
+ '𦌾' => '𦌾',
+ '羕' => '羕',
+ '翺' => '翺',
+ '者' => '者',
+ '𦓚' => '𦓚',
+ '𦔣' => '𦔣',
+ '聠' => '聠',
+ '𦖨' => '𦖨',
+ '聰' => '聰',
+ '𣍟' => '𣍟',
+ '䏕' => '䏕',
+ '育' => '育',
+ '脃' => '脃',
+ '䐋' => '䐋',
+ '脾' => '脾',
+ '媵' => '媵',
+ '𦞧' => '𦞧',
+ '𦞵' => '𦞵',
+ '𣎓' => '𣎓',
+ '𣎜' => '𣎜',
+ '舁' => '舁',
+ '舄' => '舄',
+ '辞' => '辞',
+ '䑫' => '䑫',
+ '芑' => '芑',
+ '芋' => '芋',
+ '芝' => '芝',
+ '劳' => '劳',
+ '花' => '花',
+ '芳' => '芳',
+ '芽' => '芽',
+ '苦' => '苦',
+ '𦬼' => '𦬼',
+ '若' => '若',
+ '茝' => '茝',
+ '荣' => '荣',
+ '莭' => '莭',
+ '茣' => '茣',
+ '莽' => '莽',
+ '菧' => '菧',
+ '著' => '著',
+ '荓' => '荓',
+ '菊' => '菊',
+ '菌' => '菌',
+ '菜' => '菜',
+ '𦰶' => '𦰶',
+ '𦵫' => '𦵫',
+ '𦳕' => '𦳕',
+ '䔫' => '䔫',
+ '蓱' => '蓱',
+ '蓳' => '蓳',
+ '蔖' => '蔖',
+ '𧏊' => '𧏊',
+ '蕤' => '蕤',
+ '𦼬' => '𦼬',
+ '䕝' => '䕝',
+ '䕡' => '䕡',
+ '𦾱' => '𦾱',
+ '𧃒' => '𧃒',
+ '䕫' => '䕫',
+ '虐' => '虐',
+ '虜' => '虜',
+ '虧' => '虧',
+ '虩' => '虩',
+ '蚩' => '蚩',
+ '蚈' => '蚈',
+ '蜎' => '蜎',
+ '蛢' => '蛢',
+ '蝹' => '蝹',
+ '蜨' => '蜨',
+ '蝫' => '蝫',
+ '螆' => '螆',
+ '䗗' => '䗗',
+ '蟡' => '蟡',
+ '蠁' => '蠁',
+ '䗹' => '䗹',
+ '衠' => '衠',
+ '衣' => '衣',
+ '𧙧' => '𧙧',
+ '裗' => '裗',
+ '裞' => '裞',
+ '䘵' => '䘵',
+ '裺' => '裺',
+ '㒻' => '㒻',
+ '𧢮' => '𧢮',
+ '𧥦' => '𧥦',
+ '䚾' => '䚾',
+ '䛇' => '䛇',
+ '誠' => '誠',
+ '諭' => '諭',
+ '變' => '變',
+ '豕' => '豕',
+ '𧲨' => '𧲨',
+ '貫' => '貫',
+ '賁' => '賁',
+ '贛' => '贛',
+ '起' => '起',
+ '𧼯' => '𧼯',
+ '𠠄' => '𠠄',
+ '跋' => '跋',
+ '趼' => '趼',
+ '跰' => '跰',
+ '𠣞' => '𠣞',
+ '軔' => '軔',
+ '輸' => '輸',
+ '𨗒' => '𨗒',
+ '𨗭' => '𨗭',
+ '邔' => '邔',
+ '郱' => '郱',
+ '鄑' => '鄑',
+ '𨜮' => '𨜮',
+ '鄛' => '鄛',
+ '鈸' => '鈸',
+ '鋗' => '鋗',
+ '鋘' => '鋘',
+ '鉼' => '鉼',
+ '鏹' => '鏹',
+ '鐕' => '鐕',
+ '𨯺' => '𨯺',
+ '開' => '開',
+ '䦕' => '䦕',
+ '閷' => '閷',
+ '𨵷' => '𨵷',
+ '䧦' => '䧦',
+ '雃' => '雃',
+ '嶲' => '嶲',
+ '霣' => '霣',
+ '𩅅' => '𩅅',
+ '𩈚' => '𩈚',
+ '䩮' => '䩮',
+ '䩶' => '䩶',
+ '韠' => '韠',
+ '𩐊' => '𩐊',
+ '䪲' => '䪲',
+ '𩒖' => '𩒖',
+ '頋' => '頋',
+ '頋' => '頋',
+ '頩' => '頩',
+ '𩖶' => '𩖶',
+ '飢' => '飢',
+ '䬳' => '䬳',
+ '餩' => '餩',
+ '馧' => '馧',
+ '駂' => '駂',
+ '駾' => '駾',
+ '䯎' => '䯎',
+ '𩬰' => '𩬰',
+ '鬒' => '鬒',
+ '鱀' => '鱀',
+ '鳽' => '鳽',
+ '䳎' => '䳎',
+ '䳭' => '䳭',
+ '鵧' => '鵧',
+ '𪃎' => '𪃎',
+ '䳸' => '䳸',
+ '𪄅' => '𪄅',
+ '𪈎' => '𪈎',
+ '𪊑' => '𪊑',
+ '麻' => '麻',
+ '䵖' => '䵖',
+ '黹' => '黹',
+ '黾' => '黾',
+ '鼅' => '鼅',
+ '鼏' => '鼏',
+ '鼖' => '鼖',
+ '鼻' => '鼻',
+ '𪘀' => '𪘀',
+ 'Æ' => 'AE',
+ 'Ð' => 'D',
+ 'Ø' => 'O',
+ 'Þ' => 'TH',
+ 'ß' => 'ss',
+ 'æ' => 'ae',
+ 'ð' => 'd',
+ 'ø' => 'o',
+ 'þ' => 'th',
+ 'Đ' => 'D',
+ 'đ' => 'd',
+ 'Ħ' => 'H',
+ 'ħ' => 'h',
+ 'ı' => 'i',
+ 'ĸ' => 'q',
+ 'Ł' => 'L',
+ 'ł' => 'l',
+ 'Ŋ' => 'N',
+ 'ŋ' => 'n',
+ 'Œ' => 'OE',
+ 'œ' => 'oe',
+ 'Ŧ' => 'T',
+ 'ŧ' => 't',
+ 'ƀ' => 'b',
+ 'Ɓ' => 'B',
+ 'Ƃ' => 'B',
+ 'ƃ' => 'b',
+ 'Ƈ' => 'C',
+ 'ƈ' => 'c',
+ 'Ɖ' => 'D',
+ 'Ɗ' => 'D',
+ 'Ƌ' => 'D',
+ 'ƌ' => 'd',
+ 'Ɛ' => 'E',
+ 'Ƒ' => 'F',
+ 'ƒ' => 'f',
+ 'Ɠ' => 'G',
+ 'ƕ' => 'hv',
+ 'Ɩ' => 'I',
+ 'Ɨ' => 'I',
+ 'Ƙ' => 'K',
+ 'ƙ' => 'k',
+ 'ƚ' => 'l',
+ 'Ɲ' => 'N',
+ 'ƞ' => 'n',
+ 'Ƣ' => 'OI',
+ 'ƣ' => 'oi',
+ 'Ƥ' => 'P',
+ 'ƥ' => 'p',
+ 'ƫ' => 't',
+ 'Ƭ' => 'T',
+ 'ƭ' => 't',
+ 'Ʈ' => 'T',
+ 'Ʋ' => 'V',
+ 'Ƴ' => 'Y',
+ 'ƴ' => 'y',
+ 'Ƶ' => 'Z',
+ 'ƶ' => 'z',
+ 'Ǥ' => 'G',
+ 'ǥ' => 'g',
+ 'ȡ' => 'd',
+ 'Ȥ' => 'Z',
+ 'ȥ' => 'z',
+ 'ȴ' => 'l',
+ 'ȵ' => 'n',
+ 'ȶ' => 't',
+ 'ȷ' => 'j',
+ 'ȸ' => 'db',
+ 'ȹ' => 'qp',
+ 'Ⱥ' => 'A',
+ 'Ȼ' => 'C',
+ 'ȼ' => 'c',
+ 'Ƚ' => 'L',
+ 'Ⱦ' => 'T',
+ 'ȿ' => 's',
+ 'ɀ' => 'z',
+ 'Ƀ' => 'B',
+ 'Ʉ' => 'U',
+ 'Ɇ' => 'E',
+ 'ɇ' => 'e',
+ 'Ɉ' => 'J',
+ 'ɉ' => 'j',
+ 'Ɍ' => 'R',
+ 'ɍ' => 'r',
+ 'Ɏ' => 'Y',
+ 'ɏ' => 'y',
+ 'ɓ' => 'b',
+ 'ɕ' => 'c',
+ 'ɖ' => 'd',
+ 'ɗ' => 'd',
+ 'ɛ' => 'e',
+ 'ɟ' => 'j',
+ 'ɠ' => 'g',
+ 'ɡ' => 'g',
+ 'ɢ' => 'G',
+ 'ɦ' => 'h',
+ 'ɧ' => 'h',
+ 'ɨ' => 'i',
+ 'ɪ' => 'I',
+ 'ɫ' => 'l',
+ 'ɬ' => 'l',
+ 'ɭ' => 'l',
+ 'ɱ' => 'm',
+ 'ɲ' => 'n',
+ 'ɳ' => 'n',
+ 'ɴ' => 'N',
+ 'ɶ' => 'OE',
+ 'ɼ' => 'r',
+ 'ɽ' => 'r',
+ 'ɾ' => 'r',
+ 'ʀ' => 'R',
+ 'ʂ' => 's',
+ 'ʈ' => 't',
+ 'ʉ' => 'u',
+ 'ʋ' => 'v',
+ 'ʏ' => 'Y',
+ 'ʐ' => 'z',
+ 'ʑ' => 'z',
+ 'ʙ' => 'B',
+ 'ʛ' => 'G',
+ 'ʜ' => 'H',
+ 'ʝ' => 'j',
+ 'ʟ' => 'L',
+ 'ʠ' => 'q',
+ 'ʣ' => 'dz',
+ 'ʥ' => 'dz',
+ 'ʦ' => 'ts',
+ 'ʪ' => 'ls',
+ 'ʫ' => 'lz',
+ 'ᴀ' => 'A',
+ 'ᴁ' => 'AE',
+ 'ᴃ' => 'B',
+ 'ᴄ' => 'C',
+ 'ᴅ' => 'D',
+ 'ᴆ' => 'D',
+ 'ᴇ' => 'E',
+ 'ᴊ' => 'J',
+ 'ᴋ' => 'K',
+ 'ᴌ' => 'L',
+ 'ᴍ' => 'M',
+ 'ᴏ' => 'O',
+ 'ᴘ' => 'P',
+ 'ᴛ' => 'T',
+ 'ᴜ' => 'U',
+ 'ᴠ' => 'V',
+ 'ᴡ' => 'W',
+ 'ᴢ' => 'Z',
+ 'ᵫ' => 'ue',
+ 'ᵬ' => 'b',
+ 'ᵭ' => 'd',
+ 'ᵮ' => 'f',
+ 'ᵯ' => 'm',
+ 'ᵰ' => 'n',
+ 'ᵱ' => 'p',
+ 'ᵲ' => 'r',
+ 'ᵳ' => 'r',
+ 'ᵴ' => 's',
+ 'ᵵ' => 't',
+ 'ᵶ' => 'z',
+ 'ᵺ' => 'th',
+ 'ᵻ' => 'I',
+ 'ᵽ' => 'p',
+ 'ᵾ' => 'U',
+ 'ᶀ' => 'b',
+ 'ᶁ' => 'd',
+ 'ᶂ' => 'f',
+ 'ᶃ' => 'g',
+ 'ᶄ' => 'k',
+ 'ᶅ' => 'l',
+ 'ᶆ' => 'm',
+ 'ᶇ' => 'n',
+ 'ᶈ' => 'p',
+ 'ᶉ' => 'r',
+ 'ᶊ' => 's',
+ 'ᶌ' => 'v',
+ 'ᶍ' => 'x',
+ 'ᶎ' => 'z',
+ 'ᶏ' => 'a',
+ 'ᶑ' => 'd',
+ 'ᶒ' => 'e',
+ 'ᶓ' => 'e',
+ 'ᶖ' => 'i',
+ 'ᶙ' => 'u',
+ 'ẜ' => 's',
+ 'ẝ' => 's',
+ 'ẞ' => 'SS',
+ 'Ỻ' => 'LL',
+ 'ỻ' => 'll',
+ 'Ỽ' => 'V',
+ 'ỽ' => 'v',
+ 'Ỿ' => 'Y',
+ 'ỿ' => 'y',
+ '©' => '(C)',
+ '®' => '(R)',
+ '₠' => 'CE',
+ '₢' => 'Cr',
+ '₣' => 'Fr.',
+ '₤' => 'L.',
+ '₧' => 'Pts',
+ '₺' => 'TL',
+ '₹' => 'Rs',
+ '℞' => 'Rx',
+ '〇' => '0',
+ '‘' => '\'',
+ '’' => '\'',
+ '‚' => ',',
+ '‛' => '\'',
+ '“' => '"',
+ '”' => '"',
+ '„' => ',,',
+ '‟' => '"',
+ '′' => '\'',
+ '〝' => '"',
+ '〞' => '"',
+ '«' => '<<',
+ '»' => '>>',
+ '‹' => '<',
+ '›' => '>',
+ '‐' => '-',
+ '‑' => '-',
+ '‒' => '-',
+ '–' => '-',
+ '—' => '-',
+ '―' => '-',
+ '︱' => '-',
+ '︲' => '-',
+ '‖' => '||',
+ '⁄' => '/',
+ '⁅' => '[',
+ '⁆' => ']',
+ '⁎' => '*',
+ '、' => ',',
+ '。' => '.',
+ '〈' => '<',
+ '〉' => '>',
+ '《' => '<<',
+ '》' => '>>',
+ '〔' => '[',
+ '〕' => ']',
+ '〘' => '[',
+ '〙' => ']',
+ '〚' => '[',
+ '〛' => ']',
+ '︐' => ',',
+ '︑' => ',',
+ '︒' => '.',
+ '︓' => ':',
+ '︔' => ';',
+ '︕' => '!',
+ '︖' => '?',
+ '︙' => '...',
+ '︰' => '..',
+ '︵' => '(',
+ '︶' => ')',
+ '︷' => '{',
+ '︸' => '}',
+ '︹' => '[',
+ '︺' => ']',
+ '︽' => '<<',
+ '︾' => '>>',
+ '︿' => '<',
+ '﹀' => '>',
+ '﹇' => '[',
+ '﹈' => ']',
+ '×' => '*',
+ '÷' => '/',
+ '−' => '-',
+ '∕' => '/',
+ '∖' => '\\',
+ '∣' => '|',
+ '∥' => '||',
+ '≪' => '<<',
+ '≫' => '>>',
+ '⦅' => '((',
+ '⦆' => '))',
+);
+
+$result =& $data;
+unset($data);
+
+return $result;
diff --git a/vendor/symfony/polyfill-iconv/bootstrap.php b/vendor/symfony/polyfill-iconv/bootstrap.php
new file mode 100644
index 0000000..5274732
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/bootstrap.php
@@ -0,0 +1,44 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Iconv as p;
+
+if (!function_exists('iconv')) {
+ define('ICONV_IMPL', 'Symfony');
+ define('ICONV_VERSION', '1.0');
+ define('ICONV_MIME_DECODE_STRICT', 1);
+ define('ICONV_MIME_DECODE_CONTINUE_ON_ERROR', 2);
+
+ function iconv($from, $to, $s) { return p\Iconv::iconv($from, $to, $s); }
+ function iconv_get_encoding($type = 'all') { return p\Iconv::iconv_get_encoding($type); }
+ function iconv_set_encoding($type, $charset) { return p\Iconv::iconv_set_encoding($type, $charset); }
+ function iconv_mime_encode($name, $value, $pref = null) { return p\Iconv::iconv_mime_encode($name, $value, $pref); }
+ function iconv_mime_decode_headers($encodedHeaders, $mode = 0, $enc = null) { return p\Iconv::iconv_mime_decode_headers($encodedHeaders, $mode, $enc); }
+
+ if (extension_loaded('mbstring')) {
+ function iconv_strlen($s, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strlen($s, $enc); }
+ function iconv_strpos($s, $needle, $offset = 0, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strpos($s, $needle, $offset, $enc); }
+ function iconv_strrpos($s, $needle, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strrpos($s, $needle, 0, $enc); }
+ function iconv_substr($s, $start, $length = 2147483647, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_substr($s, $start, $length, $enc); }
+ function iconv_mime_decode($encodedHeaders, $mode = 0, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_decode_mimeheader($encodedHeaders, $mode, $enc); }
+ } else {
+ if (extension_loaded('xml')) {
+ function iconv_strlen($s, $enc = null) { return p\Iconv::strlen1($s, $enc); }
+ } else {
+ function iconv_strlen($s, $enc = null) { return p\Iconv::strlen2($s, $enc); }
+ }
+
+ function iconv_strpos($s, $needle, $offset = 0, $enc = null) { return p\Iconv::iconv_strpos($s, $needle, $offset, $enc); }
+ function iconv_strrpos($s, $needle, $enc = null) { return p\Iconv::iconv_strrpos($s, $needle, $enc); }
+ function iconv_substr($s, $start, $length = 2147483647, $enc = null) { return p\Iconv::iconv_substr($s, $start, $length, $enc); }
+ function iconv_mime_decode($encodedHeaders, $mode = 0, $enc = null) { return p\Iconv::iconv_mime_decode($encodedHeaders, $mode, $enc); }
+ }
+}
diff --git a/vendor/symfony/polyfill-iconv/composer.json b/vendor/symfony/polyfill-iconv/composer.json
new file mode 100644
index 0000000..816e6bd
--- /dev/null
+++ b/vendor/symfony/polyfill-iconv/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/polyfill-iconv",
+ "type": "library",
+ "description": "Symfony polyfill for the Iconv extension",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "iconv"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Iconv\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-iconv": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php
new file mode 100644
index 0000000..f205f39
--- /dev/null
+++ b/vendor/symfony/polyfill-intl-idn/Idn.php
@@ -0,0 +1,280 @@
+
+ * @author Sebastian Kroczek
+ * @author Dmitry Lukashin
+ * @author Laurent Bassin
+ *
+ * @internal
+ */
+final class Idn
+{
+ private static $encodeTable = array(
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
+ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
+ 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ );
+
+ private static $decodeTable = array(
+ 'a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5,
+ 'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11,
+ 'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17,
+ 's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23,
+ 'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29,
+ '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35,
+ );
+
+ public static function idn_to_ascii($domain, $options, $variant, &$idna_info = array())
+ {
+ if (\PHP_VERSION_ID >= 70200 && INTL_IDNA_VARIANT_2003 === $variant) {
+ @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
+ }
+
+ if (INTL_IDNA_VARIANT_UTS46 === $variant) {
+ $domain = mb_strtolower($domain, 'utf-8');
+ }
+
+ $parts = explode('.', $domain);
+
+ foreach ($parts as &$part) {
+ if ('' === $part) {
+ return false;
+ }
+ if (false === $part = self::encodePart($part)) {
+ return false;
+ }
+ }
+
+ $output = implode('.', $parts);
+
+ $idna_info = array(
+ 'result' => \strlen($output) > 255 ? false : $output,
+ 'isTransitionalDifferent' => false,
+ 'errors' => 0,
+ );
+
+ return $idna_info['result'];
+ }
+
+ public static function idn_to_utf8($domain, $options, $variant, &$idna_info = array())
+ {
+ if (\PHP_VERSION_ID >= 70200 && INTL_IDNA_VARIANT_2003 === $variant) {
+ @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
+ }
+
+ $parts = explode('.', $domain);
+
+ foreach ($parts as &$part) {
+ $length = \strlen($part);
+ if ($length < 1 || 63 < $length) {
+ continue;
+ }
+ if (0 !== strpos($part, 'xn--')) {
+ continue;
+ }
+
+ $part = substr($part, 4);
+ $part = self::decodePart($part);
+ }
+
+ $output = implode('.', $parts);
+
+ $idna_info = array(
+ 'result' => \strlen($output) > 255 ? false : $output,
+ 'isTransitionalDifferent' => false,
+ 'errors' => 0,
+ );
+
+ return $idna_info['result'];
+ }
+
+ private static function encodePart($input)
+ {
+ $codePoints = self::listCodePoints($input);
+
+ $n = 128;
+ $bias = 72;
+ $delta = 0;
+ $h = $b = \count($codePoints['basic']);
+
+ $output = '';
+ foreach ($codePoints['basic'] as $code) {
+ $output .= mb_chr($code, 'utf-8');
+ }
+ if ($input === $output) {
+ return $output;
+ }
+ if ($b > 0) {
+ $output .= '-';
+ }
+
+ $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
+ sort($codePoints['nonBasic']);
+
+ $i = 0;
+ $length = mb_strlen($input, 'utf-8');
+ while ($h < $length) {
+ $m = $codePoints['nonBasic'][$i++];
+ $delta += ($m - $n) * ($h + 1);
+ $n = $m;
+
+ foreach ($codePoints['all'] as $c) {
+ if ($c < $n || $c < 128) {
+ ++$delta;
+ }
+ if ($c === $n) {
+ $q = $delta;
+ for ($k = 36;; $k += 36) {
+ $t = self::calculateThreshold($k, $bias);
+ if ($q < $t) {
+ break;
+ }
+
+ $code = $t + (($q - $t) % (36 - $t));
+ $output .= self::$encodeTable[$code];
+
+ $q = ($q - $t) / (36 - $t);
+ }
+
+ $output .= self::$encodeTable[$q];
+ $bias = self::adapt($delta, $h + 1, ($h === $b));
+ $delta = 0;
+ ++$h;
+ }
+ }
+
+ ++$delta;
+ ++$n;
+ }
+
+ $output = 'xn--'.$output;
+
+ return \strlen($output) < 1 || 63 < \strlen($output) ? false : strtolower($output);
+ }
+
+ private static function listCodePoints($input)
+ {
+ $codePoints = array(
+ 'all' => array(),
+ 'basic' => array(),
+ 'nonBasic' => array(),
+ );
+
+ $length = mb_strlen($input, 'utf-8');
+ for ($i = 0; $i < $length; ++$i) {
+ $char = mb_substr($input, $i, 1, 'utf-8');
+ $code = mb_ord($char, 'utf-8');
+ if ($code < 128) {
+ $codePoints['all'][] = $codePoints['basic'][] = $code;
+ } else {
+ $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
+ }
+ }
+
+ return $codePoints;
+ }
+
+ private static function calculateThreshold($k, $bias)
+ {
+ if ($k <= $bias + 1) {
+ return 1;
+ }
+ if ($k >= $bias + 26) {
+ return 26;
+ }
+
+ return $k - $bias;
+ }
+
+ private static function adapt($delta, $numPoints, $firstTime)
+ {
+ $delta = (int) ($firstTime ? $delta / 700 : $delta / 2);
+ $delta += (int) ($delta / $numPoints);
+
+ $k = 0;
+ while ($delta > 35 * 13) {
+ $delta = (int) ($delta / 35);
+ $k = $k + 36;
+ }
+
+ return $k + (int) (36 * $delta / ($delta + 38));
+ }
+
+ private static function decodePart($input)
+ {
+ $n = 128;
+ $i = 0;
+ $bias = 72;
+ $output = '';
+
+ $pos = strrpos($input, '-');
+ if (false !== $pos) {
+ $output = substr($input, 0, $pos++);
+ } else {
+ $pos = 0;
+ }
+
+ $outputLength = \strlen($output);
+ $inputLength = \strlen($input);
+
+ while ($pos < $inputLength) {
+ $oldi = $i;
+ $w = 1;
+
+ for ($k = 36;; $k += 36) {
+ $digit = self::$decodeTable[$input[$pos++]];
+ $i += $digit * $w;
+ $t = self::calculateThreshold($k, $bias);
+
+ if ($digit < $t) {
+ break;
+ }
+
+ $w *= 36 - $t;
+ }
+
+ $bias = self::adapt($i - $oldi, ++$outputLength, 0 === $oldi);
+ $n = $n + (int) ($i / $outputLength);
+ $i = $i % $outputLength;
+ $output = mb_substr($output, 0, $i, 'utf-8').mb_chr($n, 'utf-8').mb_substr($output, $i, $outputLength - 1, 'utf-8');
+
+ ++$i;
+ }
+
+ return $output;
+ }
+}
diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE
new file mode 100644
index 0000000..ad399a7
--- /dev/null
+++ b/vendor/symfony/polyfill-intl-idn/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md
new file mode 100644
index 0000000..5fd8c6e
--- /dev/null
+++ b/vendor/symfony/polyfill-intl-idn/README.md
@@ -0,0 +1,12 @@
+Symfony Polyfill / Intl: Idn
+============================
+
+This component provides `idn_to_ascii` and `idn_to_utf8` functions to users who run php versions without the intl extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php
new file mode 100644
index 0000000..c6e3921
--- /dev/null
+++ b/vendor/symfony/polyfill-intl-idn/bootstrap.php
@@ -0,0 +1,59 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Intl\Idn as p;
+
+if (!function_exists('idn_to_ascii')) {
+ define('U_IDNA_PROHIBITED_ERROR', 66560);
+ define('U_IDNA_ERROR_START', 66560);
+ define('U_IDNA_UNASSIGNED_ERROR', 66561);
+ define('U_IDNA_CHECK_BIDI_ERROR', 66562);
+ define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
+ define('U_IDNA_ACE_PREFIX_ERROR', 66564);
+ define('U_IDNA_VERIFICATION_ERROR', 66565);
+ define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
+ define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
+ define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
+ define('U_IDNA_ERROR_LIMIT', 66569);
+ define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
+ define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
+ define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
+ define('IDNA_DEFAULT', 0);
+ define('IDNA_ALLOW_UNASSIGNED', 1);
+ define('IDNA_USE_STD3_RULES', 2);
+ define('IDNA_CHECK_BIDI', 4);
+ define('IDNA_CHECK_CONTEXTJ', 8);
+ define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
+ define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
+ define('INTL_IDNA_VARIANT_2003', 0);
+ define('INTL_IDNA_VARIANT_UTS46', 1);
+ define('IDNA_ERROR_EMPTY_LABEL', 1);
+ define('IDNA_ERROR_LABEL_TOO_LONG', 2);
+ define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
+ define('IDNA_ERROR_LEADING_HYPHEN', 8);
+ define('IDNA_ERROR_TRAILING_HYPHEN', 16);
+ define('IDNA_ERROR_HYPHEN_3_4', 32);
+ define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
+ define('IDNA_ERROR_DISALLOWED', 128);
+ define('IDNA_ERROR_PUNYCODE', 256);
+ define('IDNA_ERROR_LABEL_HAS_DOT', 512);
+ define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
+ define('IDNA_ERROR_BIDI', 2048);
+ define('IDNA_ERROR_CONTEXTJ', 4096);
+
+ if (PHP_VERSION_ID < 70400) {
+ function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+ function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
+ } else {
+ function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+ function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
+ }
+}
diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json
new file mode 100644
index 0000000..8f46fbd
--- /dev/null
+++ b/vendor/symfony/polyfill-intl-idn/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "symfony/polyfill-intl-idn",
+ "type": "library",
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-mbstring": "^1.3",
+ "symfony/polyfill-php72": "^1.9"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-mbstring/LICENSE b/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 0000000..24fa32c
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2018 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 0000000..a5e4a8f
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,800 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Mbstring;
+
+/**
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
+ *
+ * Implemented:
+ * - mb_chr - Returns a specific character from its Unicode code point
+ * - mb_convert_encoding - Convert character encoding
+ * - mb_convert_variables - Convert character code in variable(s)
+ * - mb_decode_mimeheader - Decode string in MIME header field
+ * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
+ * - mb_convert_case - Perform case folding on a string
+ * - mb_detect_encoding - Detect character encoding
+ * - mb_get_info - Get internal settings of mbstring
+ * - mb_http_input - Detect HTTP input character encoding
+ * - mb_http_output - Set/Get HTTP output character encoding
+ * - mb_internal_encoding - Set/Get internal character encoding
+ * - mb_list_encodings - Returns an array of all supported encodings
+ * - mb_ord - Returns the Unicode code point of a character
+ * - mb_output_handler - Callback function converts character encoding in output buffer
+ * - mb_scrub - Replaces ill-formed byte sequences with substitute characters
+ * - mb_strlen - Get string length
+ * - mb_strpos - Find position of first occurrence of string in a string
+ * - mb_strrpos - Find position of last occurrence of a string in a string
+ * - mb_strtolower - Make a string lowercase
+ * - mb_strtoupper - Make a string uppercase
+ * - mb_substitute_character - Set/Get substitution character
+ * - mb_substr - Get part of string
+ * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
+ * - mb_stristr - Finds first occurrence of a string within another, case insensitive
+ * - mb_strrchr - Finds the last occurrence of a character in a string within another
+ * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
+ * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
+ * - mb_strstr - Finds first occurrence of a string within another
+ * - mb_strwidth - Return width of string
+ * - mb_substr_count - Count the number of substring occurrences
+ *
+ * Not implemented:
+ * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
+ * - mb_ereg_* - Regular expression with multibyte support
+ * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
+ * - mb_preferred_mime_name - Get MIME charset string
+ * - mb_regex_encoding - Returns current encoding for multibyte regex as string
+ * - mb_regex_set_options - Set/Get the default options for mbregex functions
+ * - mb_send_mail - Send encoded mail
+ * - mb_split - Split multibyte string using regular expression
+ * - mb_strcut - Get part of string
+ * - mb_strimwidth - Get truncated string with specified width
+ *
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+final class Mbstring
+{
+ const MB_CASE_FOLD = PHP_INT_MAX;
+
+ private static $encodingList = array('ASCII', 'UTF-8');
+ private static $language = 'neutral';
+ private static $internalEncoding = 'UTF-8';
+ private static $caseFold = array(
+ array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
+ array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
+ );
+
+ public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+ {
+ if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
+ $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
+ } else {
+ $fromEncoding = self::getEncoding($fromEncoding);
+ }
+
+ $toEncoding = self::getEncoding($toEncoding);
+
+ if ('BASE64' === $fromEncoding) {
+ $s = base64_decode($s);
+ $fromEncoding = $toEncoding;
+ }
+
+ if ('BASE64' === $toEncoding) {
+ return base64_encode($s);
+ }
+
+ if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
+ if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
+ $fromEncoding = 'Windows-1252';
+ }
+ if ('UTF-8' !== $fromEncoding) {
+ $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
+ }
+
+ return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
+ }
+
+ if ('HTML-ENTITIES' === $fromEncoding) {
+ $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
+ $fromEncoding = 'UTF-8';
+ }
+
+ return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
+ }
+
+ public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
+ {
+ $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
+
+ $ok = true;
+ array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+ if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
+ $ok = false;
+ }
+ });
+
+ return $ok ? $fromEncoding : false;
+ }
+
+ public static function mb_decode_mimeheader($s)
+ {
+ return iconv_mime_decode($s, 2, self::$internalEncoding);
+ }
+
+ public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
+ {
+ trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
+ }
+
+ public static function mb_decode_numericentity($s, $convmap, $encoding = null)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
+ trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || !$convmap) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
+
+ return ''; // Instead of null (cf. mb_encode_numericentity).
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+
+ for ($i = 0; $i < $cnt; $i += 4) {
+ // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
+ $convmap[$i] += $convmap[$i + 2];
+ $convmap[$i + 1] += $convmap[$i + 2];
+ }
+
+ $s = preg_replace_callback('/(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
+ $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
+ for ($i = 0; $i < $cnt; $i += 4) {
+ if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
+ return Mbstring::mb_chr($c - $convmap[$i + 2]);
+ }
+ }
+
+ return $m[0];
+ }, $s);
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
+ trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || !$convmap) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
+
+ return null; // Instead of '' (cf. mb_decode_numericentity).
+ }
+
+ if (null !== $is_hex && !\is_scalar($is_hex)) {
+ trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
+
+ return null;
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+ $i = 0;
+ $len = \strlen($s);
+ $result = '';
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+ $c = self::mb_ord($uchr);
+
+ for ($j = 0; $j < $cnt; $j += 4) {
+ if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
+ $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
+ $result .= $is_hex ? sprintf('%X;', $cOffset) : ''.$cOffset.';';
+ continue 2;
+ }
+ }
+ $result .= $uchr;
+ }
+
+ if (null === $encoding) {
+ return $result;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $result);
+ }
+
+ public static function mb_convert_case($s, $mode, $encoding = null)
+ {
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ if (MB_CASE_TITLE == $mode) {
+ static $titleRegexp = null;
+ if (null === $titleRegexp) {
+ $titleRegexp = self::getData('titleCaseRegexp');
+ }
+ $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
+ } else {
+ if (MB_CASE_UPPER == $mode) {
+ static $upper = null;
+ if (null === $upper) {
+ $upper = self::getData('upperCase');
+ }
+ $map = $upper;
+ } else {
+ if (self::MB_CASE_FOLD === $mode) {
+ $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
+ }
+
+ static $lower = null;
+ if (null === $lower) {
+ $lower = self::getData('lowerCase');
+ }
+ $map = $lower;
+ }
+
+ static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
+
+ $i = 0;
+ $len = \strlen($s);
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+
+ if (isset($map[$uchr])) {
+ $uchr = $map[$uchr];
+ $nlen = \strlen($uchr);
+
+ if ($nlen == $ulen) {
+ $nlen = $i;
+ do {
+ $s[--$nlen] = $uchr[--$ulen];
+ } while ($ulen);
+ } else {
+ $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
+ $len += $nlen - $ulen;
+ $i += $nlen - $ulen;
+ }
+ }
+ }
+ }
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_internal_encoding($encoding = null)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
+ self::$internalEncoding = $encoding;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public static function mb_language($lang = null)
+ {
+ if (null === $lang) {
+ return self::$language;
+ }
+
+ switch ($lang = strtolower($lang)) {
+ case 'uni':
+ case 'neutral':
+ self::$language = $lang;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public static function mb_list_encodings()
+ {
+ return array('UTF-8');
+ }
+
+ public static function mb_encoding_aliases($encoding)
+ {
+ switch (strtoupper($encoding)) {
+ case 'UTF8':
+ case 'UTF-8':
+ return array('utf8');
+ }
+
+ return false;
+ }
+
+ public static function mb_check_encoding($var = null, $encoding = null)
+ {
+ if (null === $encoding) {
+ if (null === $var) {
+ return false;
+ }
+ $encoding = self::$internalEncoding;
+ }
+
+ return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
+ }
+
+ public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
+ {
+ if (null === $encodingList) {
+ $encodingList = self::$encodingList;
+ } else {
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+ }
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ case 'ASCII':
+ if (!preg_match('/[\x80-\xFF]/', $str)) {
+ return $enc;
+ }
+ break;
+
+ case 'UTF8':
+ case 'UTF-8':
+ if (preg_match('//u', $str)) {
+ return 'UTF-8';
+ }
+ break;
+
+ default:
+ if (0 === strncmp($enc, 'ISO-8859-', 9)) {
+ return $enc;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static function mb_detect_order($encodingList = null)
+ {
+ if (null === $encodingList) {
+ return self::$encodingList;
+ }
+
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ default:
+ if (strncmp($enc, 'ISO-8859-', 9)) {
+ return false;
+ }
+ // no break
+ case 'ASCII':
+ case 'UTF8':
+ case 'UTF-8':
+ }
+ }
+
+ self::$encodingList = $encodingList;
+
+ return true;
+ }
+
+ public static function mb_strlen($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return \strlen($s);
+ }
+
+ return @iconv_strlen($s, $encoding);
+ }
+
+ public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strpos($haystack, $needle, $offset);
+ }
+
+ $needle = (string) $needle;
+ if ('' === $needle) {
+ trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
+
+ return false;
+ }
+
+ return iconv_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strrpos($haystack, $needle, $offset);
+ }
+
+ if ($offset != (int) $offset) {
+ $offset = 0;
+ } elseif ($offset = (int) $offset) {
+ if ($offset < 0) {
+ $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+ $offset = 0;
+ } else {
+ $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+ }
+ }
+
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
+
+ return false !== $pos ? $offset + $pos : false;
+ }
+
+ public static function mb_strtolower($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
+ }
+
+ public static function mb_strtoupper($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
+ }
+
+ public static function mb_substitute_character($c = null)
+ {
+ if (0 === strcasecmp($c, 'none')) {
+ return true;
+ }
+
+ return null !== $c ? false : 'none';
+ }
+
+ public static function mb_substr($s, $start, $length = null, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return substr($s, $start, null === $length ? 2147483647 : $length);
+ }
+
+ if ($start < 0) {
+ $start = iconv_strlen($s, $encoding) + $start;
+ if ($start < 0) {
+ $start = 0;
+ }
+ }
+
+ if (null === $length) {
+ $length = 2147483647;
+ } elseif ($length < 0) {
+ $length = iconv_strlen($s, $encoding) + $length - $start;
+ if ($length < 0) {
+ return '';
+ }
+ }
+
+ return (string) iconv_substr($s, $start, $length, $encoding);
+ }
+
+ public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+ $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+ return self::mb_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strrchr($haystack, $needle, $part);
+ }
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = self::mb_strripos($haystack, $needle, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+ $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+ return self::mb_strrpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = strpos($haystack, $needle);
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return substr($haystack, 0, $pos);
+ }
+
+ return substr($haystack, $pos);
+ }
+
+ public static function mb_get_info($type = 'all')
+ {
+ $info = array(
+ 'internal_encoding' => self::$internalEncoding,
+ 'http_output' => 'pass',
+ 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
+ 'func_overload' => 0,
+ 'func_overload_list' => 'no overload',
+ 'mail_charset' => 'UTF-8',
+ 'mail_header_encoding' => 'BASE64',
+ 'mail_body_encoding' => 'BASE64',
+ 'illegal_chars' => 0,
+ 'encoding_translation' => 'Off',
+ 'language' => self::$language,
+ 'detect_order' => self::$encodingList,
+ 'substitute_character' => 'none',
+ 'strict_detection' => 'Off',
+ );
+
+ if ('all' === $type) {
+ return $info;
+ }
+ if (isset($info[$type])) {
+ return $info[$type];
+ }
+
+ return false;
+ }
+
+ public static function mb_http_input($type = '')
+ {
+ return false;
+ }
+
+ public static function mb_http_output($encoding = null)
+ {
+ return null !== $encoding ? 'pass' === $encoding : 'pass';
+ }
+
+ public static function mb_strwidth($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' !== $encoding) {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
+
+ return ($wide << 1) + iconv_strlen($s, 'UTF-8');
+ }
+
+ public static function mb_substr_count($haystack, $needle, $encoding = null)
+ {
+ return substr_count($haystack, $needle);
+ }
+
+ public static function mb_output_handler($contents, $status)
+ {
+ return $contents;
+ }
+
+ public static function mb_chr($code, $encoding = null)
+ {
+ if (0x80 > $code %= 0x200000) {
+ $s = \chr($code);
+ } elseif (0x800 > $code) {
+ $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
+ } elseif (0x10000 > $code) {
+ $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ } else {
+ $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ }
+
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, $encoding, 'UTF-8');
+ }
+
+ return $s;
+ }
+
+ public static function mb_ord($s, $encoding = null)
+ {
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, 'UTF-8', $encoding);
+ }
+
+ if (1 === \strlen($s)) {
+ return \ord($s);
+ }
+
+ $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
+ if (0xF0 <= $code) {
+ return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
+ }
+ if (0xE0 <= $code) {
+ return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
+ }
+ if (0xC0 <= $code) {
+ return (($code - 0xC0) << 6) + $s[2] - 0x80;
+ }
+
+ return $code;
+ }
+
+ private static function getSubpart($pos, $part, $haystack, $encoding)
+ {
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return self::mb_substr($haystack, 0, $pos, $encoding);
+ }
+
+ return self::mb_substr($haystack, $pos, null, $encoding);
+ }
+
+ private static function html_encoding_callback(array $m)
+ {
+ $i = 1;
+ $entities = '';
+ $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
+
+ while (isset($m[$i])) {
+ if (0x80 > $m[$i]) {
+ $entities .= \chr($m[$i++]);
+ continue;
+ }
+ if (0xF0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } elseif (0xE0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } else {
+ $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
+ }
+
+ $entities .= ''.$c.';';
+ }
+
+ return $entities;
+ }
+
+ private static function title_case(array $s)
+ {
+ return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
+ }
+
+ private static function getData($file)
+ {
+ if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
+ return require $file;
+ }
+
+ return false;
+ }
+
+ private static function getEncoding($encoding)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ $encoding = strtoupper($encoding);
+
+ if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+ return 'CP850';
+ }
+ if ('UTF8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ return $encoding;
+ }
+}
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 0000000..342e828
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](http://php.net/mbstring) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
new file mode 100644
index 0000000..e6fbfa6
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -0,0 +1,1096 @@
+ 'a',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'E' => 'e',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'M' => 'm',
+ 'N' => 'n',
+ 'O' => 'o',
+ 'P' => 'p',
+ 'Q' => 'q',
+ 'R' => 'r',
+ 'S' => 's',
+ 'T' => 't',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'W' => 'w',
+ 'X' => 'x',
+ 'Y' => 'y',
+ 'Z' => 'z',
+ 'À' => 'à',
+ 'Á' => 'á',
+ 'Â' => 'â',
+ 'Ã' => 'ã',
+ 'Ä' => 'ä',
+ 'Å' => 'å',
+ 'Æ' => 'æ',
+ 'Ç' => 'ç',
+ 'È' => 'è',
+ 'É' => 'é',
+ 'Ê' => 'ê',
+ 'Ë' => 'ë',
+ 'Ì' => 'ì',
+ 'Í' => 'í',
+ 'Î' => 'î',
+ 'Ï' => 'ï',
+ 'Ð' => 'ð',
+ 'Ñ' => 'ñ',
+ 'Ò' => 'ò',
+ 'Ó' => 'ó',
+ 'Ô' => 'ô',
+ 'Õ' => 'õ',
+ 'Ö' => 'ö',
+ 'Ø' => 'ø',
+ 'Ù' => 'ù',
+ 'Ú' => 'ú',
+ 'Û' => 'û',
+ 'Ü' => 'ü',
+ 'Ý' => 'ý',
+ 'Þ' => 'þ',
+ 'Ā' => 'ā',
+ 'Ă' => 'ă',
+ 'Ą' => 'ą',
+ 'Ć' => 'ć',
+ 'Ĉ' => 'ĉ',
+ 'Ċ' => 'ċ',
+ 'Č' => 'č',
+ 'Ď' => 'ď',
+ 'Đ' => 'đ',
+ 'Ē' => 'ē',
+ 'Ĕ' => 'ĕ',
+ 'Ė' => 'ė',
+ 'Ę' => 'ę',
+ 'Ě' => 'ě',
+ 'Ĝ' => 'ĝ',
+ 'Ğ' => 'ğ',
+ 'Ġ' => 'ġ',
+ 'Ģ' => 'ģ',
+ 'Ĥ' => 'ĥ',
+ 'Ħ' => 'ħ',
+ 'Ĩ' => 'ĩ',
+ 'Ī' => 'ī',
+ 'Ĭ' => 'ĭ',
+ 'Į' => 'į',
+ 'İ' => 'i',
+ 'IJ' => 'ij',
+ 'Ĵ' => 'ĵ',
+ 'Ķ' => 'ķ',
+ 'Ĺ' => 'ĺ',
+ 'Ļ' => 'ļ',
+ 'Ľ' => 'ľ',
+ 'Ŀ' => 'ŀ',
+ 'Ł' => 'ł',
+ 'Ń' => 'ń',
+ 'Ņ' => 'ņ',
+ 'Ň' => 'ň',
+ 'Ŋ' => 'ŋ',
+ 'Ō' => 'ō',
+ 'Ŏ' => 'ŏ',
+ 'Ő' => 'ő',
+ 'Œ' => 'œ',
+ 'Ŕ' => 'ŕ',
+ 'Ŗ' => 'ŗ',
+ 'Ř' => 'ř',
+ 'Ś' => 'ś',
+ 'Ŝ' => 'ŝ',
+ 'Ş' => 'ş',
+ 'Š' => 'š',
+ 'Ţ' => 'ţ',
+ 'Ť' => 'ť',
+ 'Ŧ' => 'ŧ',
+ 'Ũ' => 'ũ',
+ 'Ū' => 'ū',
+ 'Ŭ' => 'ŭ',
+ 'Ů' => 'ů',
+ 'Ű' => 'ű',
+ 'Ų' => 'ų',
+ 'Ŵ' => 'ŵ',
+ 'Ŷ' => 'ŷ',
+ 'Ÿ' => 'ÿ',
+ 'Ź' => 'ź',
+ 'Ż' => 'ż',
+ 'Ž' => 'ž',
+ 'Ɓ' => 'ɓ',
+ 'Ƃ' => 'ƃ',
+ 'Ƅ' => 'ƅ',
+ 'Ɔ' => 'ɔ',
+ 'Ƈ' => 'ƈ',
+ 'Ɖ' => 'ɖ',
+ 'Ɗ' => 'ɗ',
+ 'Ƌ' => 'ƌ',
+ 'Ǝ' => 'ǝ',
+ 'Ə' => 'ə',
+ 'Ɛ' => 'ɛ',
+ 'Ƒ' => 'ƒ',
+ 'Ɠ' => 'ɠ',
+ 'Ɣ' => 'ɣ',
+ 'Ɩ' => 'ɩ',
+ 'Ɨ' => 'ɨ',
+ 'Ƙ' => 'ƙ',
+ 'Ɯ' => 'ɯ',
+ 'Ɲ' => 'ɲ',
+ 'Ɵ' => 'ɵ',
+ 'Ơ' => 'ơ',
+ 'Ƣ' => 'ƣ',
+ 'Ƥ' => 'ƥ',
+ 'Ʀ' => 'ʀ',
+ 'Ƨ' => 'ƨ',
+ 'Ʃ' => 'ʃ',
+ 'Ƭ' => 'ƭ',
+ 'Ʈ' => 'ʈ',
+ 'Ư' => 'ư',
+ 'Ʊ' => 'ʊ',
+ 'Ʋ' => 'ʋ',
+ 'Ƴ' => 'ƴ',
+ 'Ƶ' => 'ƶ',
+ 'Ʒ' => 'ʒ',
+ 'Ƹ' => 'ƹ',
+ 'Ƽ' => 'ƽ',
+ 'DŽ' => 'dž',
+ 'Dž' => 'dž',
+ 'LJ' => 'lj',
+ 'Lj' => 'lj',
+ 'NJ' => 'nj',
+ 'Nj' => 'nj',
+ 'Ǎ' => 'ǎ',
+ 'Ǐ' => 'ǐ',
+ 'Ǒ' => 'ǒ',
+ 'Ǔ' => 'ǔ',
+ 'Ǖ' => 'ǖ',
+ 'Ǘ' => 'ǘ',
+ 'Ǚ' => 'ǚ',
+ 'Ǜ' => 'ǜ',
+ 'Ǟ' => 'ǟ',
+ 'Ǡ' => 'ǡ',
+ 'Ǣ' => 'ǣ',
+ 'Ǥ' => 'ǥ',
+ 'Ǧ' => 'ǧ',
+ 'Ǩ' => 'ǩ',
+ 'Ǫ' => 'ǫ',
+ 'Ǭ' => 'ǭ',
+ 'Ǯ' => 'ǯ',
+ 'DZ' => 'dz',
+ 'Dz' => 'dz',
+ 'Ǵ' => 'ǵ',
+ 'Ƕ' => 'ƕ',
+ 'Ƿ' => 'ƿ',
+ 'Ǹ' => 'ǹ',
+ 'Ǻ' => 'ǻ',
+ 'Ǽ' => 'ǽ',
+ 'Ǿ' => 'ǿ',
+ 'Ȁ' => 'ȁ',
+ 'Ȃ' => 'ȃ',
+ 'Ȅ' => 'ȅ',
+ 'Ȇ' => 'ȇ',
+ 'Ȉ' => 'ȉ',
+ 'Ȋ' => 'ȋ',
+ 'Ȍ' => 'ȍ',
+ 'Ȏ' => 'ȏ',
+ 'Ȑ' => 'ȑ',
+ 'Ȓ' => 'ȓ',
+ 'Ȕ' => 'ȕ',
+ 'Ȗ' => 'ȗ',
+ 'Ș' => 'ș',
+ 'Ț' => 'ț',
+ 'Ȝ' => 'ȝ',
+ 'Ȟ' => 'ȟ',
+ 'Ƞ' => 'ƞ',
+ 'Ȣ' => 'ȣ',
+ 'Ȥ' => 'ȥ',
+ 'Ȧ' => 'ȧ',
+ 'Ȩ' => 'ȩ',
+ 'Ȫ' => 'ȫ',
+ 'Ȭ' => 'ȭ',
+ 'Ȯ' => 'ȯ',
+ 'Ȱ' => 'ȱ',
+ 'Ȳ' => 'ȳ',
+ 'Ⱥ' => 'ⱥ',
+ 'Ȼ' => 'ȼ',
+ 'Ƚ' => 'ƚ',
+ 'Ⱦ' => 'ⱦ',
+ 'Ɂ' => 'ɂ',
+ 'Ƀ' => 'ƀ',
+ 'Ʉ' => 'ʉ',
+ 'Ʌ' => 'ʌ',
+ 'Ɇ' => 'ɇ',
+ 'Ɉ' => 'ɉ',
+ 'Ɋ' => 'ɋ',
+ 'Ɍ' => 'ɍ',
+ 'Ɏ' => 'ɏ',
+ 'Ͱ' => 'ͱ',
+ 'Ͳ' => 'ͳ',
+ 'Ͷ' => 'ͷ',
+ 'Ϳ' => 'ϳ',
+ 'Ά' => 'ά',
+ 'Έ' => 'έ',
+ 'Ή' => 'ή',
+ 'Ί' => 'ί',
+ 'Ό' => 'ό',
+ 'Ύ' => 'ύ',
+ 'Ώ' => 'ώ',
+ 'Α' => 'α',
+ 'Β' => 'β',
+ 'Γ' => 'γ',
+ 'Δ' => 'δ',
+ 'Ε' => 'ε',
+ 'Ζ' => 'ζ',
+ 'Η' => 'η',
+ 'Θ' => 'θ',
+ 'Ι' => 'ι',
+ 'Κ' => 'κ',
+ 'Λ' => 'λ',
+ 'Μ' => 'μ',
+ 'Ν' => 'ν',
+ 'Ξ' => 'ξ',
+ 'Ο' => 'ο',
+ 'Π' => 'π',
+ 'Ρ' => 'ρ',
+ 'Σ' => 'σ',
+ 'Τ' => 'τ',
+ 'Υ' => 'υ',
+ 'Φ' => 'φ',
+ 'Χ' => 'χ',
+ 'Ψ' => 'ψ',
+ 'Ω' => 'ω',
+ 'Ϊ' => 'ϊ',
+ 'Ϋ' => 'ϋ',
+ 'Ϗ' => 'ϗ',
+ 'Ϙ' => 'ϙ',
+ 'Ϛ' => 'ϛ',
+ 'Ϝ' => 'ϝ',
+ 'Ϟ' => 'ϟ',
+ 'Ϡ' => 'ϡ',
+ 'Ϣ' => 'ϣ',
+ 'Ϥ' => 'ϥ',
+ 'Ϧ' => 'ϧ',
+ 'Ϩ' => 'ϩ',
+ 'Ϫ' => 'ϫ',
+ 'Ϭ' => 'ϭ',
+ 'Ϯ' => 'ϯ',
+ 'ϴ' => 'θ',
+ 'Ϸ' => 'ϸ',
+ 'Ϲ' => 'ϲ',
+ 'Ϻ' => 'ϻ',
+ 'Ͻ' => 'ͻ',
+ 'Ͼ' => 'ͼ',
+ 'Ͽ' => 'ͽ',
+ 'Ѐ' => 'ѐ',
+ 'Ё' => 'ё',
+ 'Ђ' => 'ђ',
+ 'Ѓ' => 'ѓ',
+ 'Є' => 'є',
+ 'Ѕ' => 'ѕ',
+ 'І' => 'і',
+ 'Ї' => 'ї',
+ 'Ј' => 'ј',
+ 'Љ' => 'љ',
+ 'Њ' => 'њ',
+ 'Ћ' => 'ћ',
+ 'Ќ' => 'ќ',
+ 'Ѝ' => 'ѝ',
+ 'Ў' => 'ў',
+ 'Џ' => 'џ',
+ 'А' => 'а',
+ 'Б' => 'б',
+ 'В' => 'в',
+ 'Г' => 'г',
+ 'Д' => 'д',
+ 'Е' => 'е',
+ 'Ж' => 'ж',
+ 'З' => 'з',
+ 'И' => 'и',
+ 'Й' => 'й',
+ 'К' => 'к',
+ 'Л' => 'л',
+ 'М' => 'м',
+ 'Н' => 'н',
+ 'О' => 'о',
+ 'П' => 'п',
+ 'Р' => 'р',
+ 'С' => 'с',
+ 'Т' => 'т',
+ 'У' => 'у',
+ 'Ф' => 'ф',
+ 'Х' => 'х',
+ 'Ц' => 'ц',
+ 'Ч' => 'ч',
+ 'Ш' => 'ш',
+ 'Щ' => 'щ',
+ 'Ъ' => 'ъ',
+ 'Ы' => 'ы',
+ 'Ь' => 'ь',
+ 'Э' => 'э',
+ 'Ю' => 'ю',
+ 'Я' => 'я',
+ 'Ѡ' => 'ѡ',
+ 'Ѣ' => 'ѣ',
+ 'Ѥ' => 'ѥ',
+ 'Ѧ' => 'ѧ',
+ 'Ѩ' => 'ѩ',
+ 'Ѫ' => 'ѫ',
+ 'Ѭ' => 'ѭ',
+ 'Ѯ' => 'ѯ',
+ 'Ѱ' => 'ѱ',
+ 'Ѳ' => 'ѳ',
+ 'Ѵ' => 'ѵ',
+ 'Ѷ' => 'ѷ',
+ 'Ѹ' => 'ѹ',
+ 'Ѻ' => 'ѻ',
+ 'Ѽ' => 'ѽ',
+ 'Ѿ' => 'ѿ',
+ 'Ҁ' => 'ҁ',
+ 'Ҋ' => 'ҋ',
+ 'Ҍ' => 'ҍ',
+ 'Ҏ' => 'ҏ',
+ 'Ґ' => 'ґ',
+ 'Ғ' => 'ғ',
+ 'Ҕ' => 'ҕ',
+ 'Җ' => 'җ',
+ 'Ҙ' => 'ҙ',
+ 'Қ' => 'қ',
+ 'Ҝ' => 'ҝ',
+ 'Ҟ' => 'ҟ',
+ 'Ҡ' => 'ҡ',
+ 'Ң' => 'ң',
+ 'Ҥ' => 'ҥ',
+ 'Ҧ' => 'ҧ',
+ 'Ҩ' => 'ҩ',
+ 'Ҫ' => 'ҫ',
+ 'Ҭ' => 'ҭ',
+ 'Ү' => 'ү',
+ 'Ұ' => 'ұ',
+ 'Ҳ' => 'ҳ',
+ 'Ҵ' => 'ҵ',
+ 'Ҷ' => 'ҷ',
+ 'Ҹ' => 'ҹ',
+ 'Һ' => 'һ',
+ 'Ҽ' => 'ҽ',
+ 'Ҿ' => 'ҿ',
+ 'Ӏ' => 'ӏ',
+ 'Ӂ' => 'ӂ',
+ 'Ӄ' => 'ӄ',
+ 'Ӆ' => 'ӆ',
+ 'Ӈ' => 'ӈ',
+ 'Ӊ' => 'ӊ',
+ 'Ӌ' => 'ӌ',
+ 'Ӎ' => 'ӎ',
+ 'Ӑ' => 'ӑ',
+ 'Ӓ' => 'ӓ',
+ 'Ӕ' => 'ӕ',
+ 'Ӗ' => 'ӗ',
+ 'Ә' => 'ә',
+ 'Ӛ' => 'ӛ',
+ 'Ӝ' => 'ӝ',
+ 'Ӟ' => 'ӟ',
+ 'Ӡ' => 'ӡ',
+ 'Ӣ' => 'ӣ',
+ 'Ӥ' => 'ӥ',
+ 'Ӧ' => 'ӧ',
+ 'Ө' => 'ө',
+ 'Ӫ' => 'ӫ',
+ 'Ӭ' => 'ӭ',
+ 'Ӯ' => 'ӯ',
+ 'Ӱ' => 'ӱ',
+ 'Ӳ' => 'ӳ',
+ 'Ӵ' => 'ӵ',
+ 'Ӷ' => 'ӷ',
+ 'Ӹ' => 'ӹ',
+ 'Ӻ' => 'ӻ',
+ 'Ӽ' => 'ӽ',
+ 'Ӿ' => 'ӿ',
+ 'Ԁ' => 'ԁ',
+ 'Ԃ' => 'ԃ',
+ 'Ԅ' => 'ԅ',
+ 'Ԇ' => 'ԇ',
+ 'Ԉ' => 'ԉ',
+ 'Ԋ' => 'ԋ',
+ 'Ԍ' => 'ԍ',
+ 'Ԏ' => 'ԏ',
+ 'Ԑ' => 'ԑ',
+ 'Ԓ' => 'ԓ',
+ 'Ԕ' => 'ԕ',
+ 'Ԗ' => 'ԗ',
+ 'Ԙ' => 'ԙ',
+ 'Ԛ' => 'ԛ',
+ 'Ԝ' => 'ԝ',
+ 'Ԟ' => 'ԟ',
+ 'Ԡ' => 'ԡ',
+ 'Ԣ' => 'ԣ',
+ 'Ԥ' => 'ԥ',
+ 'Ԧ' => 'ԧ',
+ 'Ԩ' => 'ԩ',
+ 'Ԫ' => 'ԫ',
+ 'Ԭ' => 'ԭ',
+ 'Ԯ' => 'ԯ',
+ 'Ա' => 'ա',
+ 'Բ' => 'բ',
+ 'Գ' => 'գ',
+ 'Դ' => 'դ',
+ 'Ե' => 'ե',
+ 'Զ' => 'զ',
+ 'Է' => 'է',
+ 'Ը' => 'ը',
+ 'Թ' => 'թ',
+ 'Ժ' => 'ժ',
+ 'Ի' => 'ի',
+ 'Լ' => 'լ',
+ 'Խ' => 'խ',
+ 'Ծ' => 'ծ',
+ 'Կ' => 'կ',
+ 'Հ' => 'հ',
+ 'Ձ' => 'ձ',
+ 'Ղ' => 'ղ',
+ 'Ճ' => 'ճ',
+ 'Մ' => 'մ',
+ 'Յ' => 'յ',
+ 'Ն' => 'ն',
+ 'Շ' => 'շ',
+ 'Ո' => 'ո',
+ 'Չ' => 'չ',
+ 'Պ' => 'պ',
+ 'Ջ' => 'ջ',
+ 'Ռ' => 'ռ',
+ 'Ս' => 'ս',
+ 'Վ' => 'վ',
+ 'Տ' => 'տ',
+ 'Ր' => 'ր',
+ 'Ց' => 'ց',
+ 'Ւ' => 'ւ',
+ 'Փ' => 'փ',
+ 'Ք' => 'ք',
+ 'Օ' => 'օ',
+ 'Ֆ' => 'ֆ',
+ 'Ⴀ' => 'ⴀ',
+ 'Ⴁ' => 'ⴁ',
+ 'Ⴂ' => 'ⴂ',
+ 'Ⴃ' => 'ⴃ',
+ 'Ⴄ' => 'ⴄ',
+ 'Ⴅ' => 'ⴅ',
+ 'Ⴆ' => 'ⴆ',
+ 'Ⴇ' => 'ⴇ',
+ 'Ⴈ' => 'ⴈ',
+ 'Ⴉ' => 'ⴉ',
+ 'Ⴊ' => 'ⴊ',
+ 'Ⴋ' => 'ⴋ',
+ 'Ⴌ' => 'ⴌ',
+ 'Ⴍ' => 'ⴍ',
+ 'Ⴎ' => 'ⴎ',
+ 'Ⴏ' => 'ⴏ',
+ 'Ⴐ' => 'ⴐ',
+ 'Ⴑ' => 'ⴑ',
+ 'Ⴒ' => 'ⴒ',
+ 'Ⴓ' => 'ⴓ',
+ 'Ⴔ' => 'ⴔ',
+ 'Ⴕ' => 'ⴕ',
+ 'Ⴖ' => 'ⴖ',
+ 'Ⴗ' => 'ⴗ',
+ 'Ⴘ' => 'ⴘ',
+ 'Ⴙ' => 'ⴙ',
+ 'Ⴚ' => 'ⴚ',
+ 'Ⴛ' => 'ⴛ',
+ 'Ⴜ' => 'ⴜ',
+ 'Ⴝ' => 'ⴝ',
+ 'Ⴞ' => 'ⴞ',
+ 'Ⴟ' => 'ⴟ',
+ 'Ⴠ' => 'ⴠ',
+ 'Ⴡ' => 'ⴡ',
+ 'Ⴢ' => 'ⴢ',
+ 'Ⴣ' => 'ⴣ',
+ 'Ⴤ' => 'ⴤ',
+ 'Ⴥ' => 'ⴥ',
+ 'Ⴧ' => 'ⴧ',
+ 'Ⴭ' => 'ⴭ',
+ 'Ḁ' => 'ḁ',
+ 'Ḃ' => 'ḃ',
+ 'Ḅ' => 'ḅ',
+ 'Ḇ' => 'ḇ',
+ 'Ḉ' => 'ḉ',
+ 'Ḋ' => 'ḋ',
+ 'Ḍ' => 'ḍ',
+ 'Ḏ' => 'ḏ',
+ 'Ḑ' => 'ḑ',
+ 'Ḓ' => 'ḓ',
+ 'Ḕ' => 'ḕ',
+ 'Ḗ' => 'ḗ',
+ 'Ḙ' => 'ḙ',
+ 'Ḛ' => 'ḛ',
+ 'Ḝ' => 'ḝ',
+ 'Ḟ' => 'ḟ',
+ 'Ḡ' => 'ḡ',
+ 'Ḣ' => 'ḣ',
+ 'Ḥ' => 'ḥ',
+ 'Ḧ' => 'ḧ',
+ 'Ḩ' => 'ḩ',
+ 'Ḫ' => 'ḫ',
+ 'Ḭ' => 'ḭ',
+ 'Ḯ' => 'ḯ',
+ 'Ḱ' => 'ḱ',
+ 'Ḳ' => 'ḳ',
+ 'Ḵ' => 'ḵ',
+ 'Ḷ' => 'ḷ',
+ 'Ḹ' => 'ḹ',
+ 'Ḻ' => 'ḻ',
+ 'Ḽ' => 'ḽ',
+ 'Ḿ' => 'ḿ',
+ 'Ṁ' => 'ṁ',
+ 'Ṃ' => 'ṃ',
+ 'Ṅ' => 'ṅ',
+ 'Ṇ' => 'ṇ',
+ 'Ṉ' => 'ṉ',
+ 'Ṋ' => 'ṋ',
+ 'Ṍ' => 'ṍ',
+ 'Ṏ' => 'ṏ',
+ 'Ṑ' => 'ṑ',
+ 'Ṓ' => 'ṓ',
+ 'Ṕ' => 'ṕ',
+ 'Ṗ' => 'ṗ',
+ 'Ṙ' => 'ṙ',
+ 'Ṛ' => 'ṛ',
+ 'Ṝ' => 'ṝ',
+ 'Ṟ' => 'ṟ',
+ 'Ṡ' => 'ṡ',
+ 'Ṣ' => 'ṣ',
+ 'Ṥ' => 'ṥ',
+ 'Ṧ' => 'ṧ',
+ 'Ṩ' => 'ṩ',
+ 'Ṫ' => 'ṫ',
+ 'Ṭ' => 'ṭ',
+ 'Ṯ' => 'ṯ',
+ 'Ṱ' => 'ṱ',
+ 'Ṳ' => 'ṳ',
+ 'Ṵ' => 'ṵ',
+ 'Ṷ' => 'ṷ',
+ 'Ṹ' => 'ṹ',
+ 'Ṻ' => 'ṻ',
+ 'Ṽ' => 'ṽ',
+ 'Ṿ' => 'ṿ',
+ 'Ẁ' => 'ẁ',
+ 'Ẃ' => 'ẃ',
+ 'Ẅ' => 'ẅ',
+ 'Ẇ' => 'ẇ',
+ 'Ẉ' => 'ẉ',
+ 'Ẋ' => 'ẋ',
+ 'Ẍ' => 'ẍ',
+ 'Ẏ' => 'ẏ',
+ 'Ẑ' => 'ẑ',
+ 'Ẓ' => 'ẓ',
+ 'Ẕ' => 'ẕ',
+ 'ẞ' => 'ß',
+ 'Ạ' => 'ạ',
+ 'Ả' => 'ả',
+ 'Ấ' => 'ấ',
+ 'Ầ' => 'ầ',
+ 'Ẩ' => 'ẩ',
+ 'Ẫ' => 'ẫ',
+ 'Ậ' => 'ậ',
+ 'Ắ' => 'ắ',
+ 'Ằ' => 'ằ',
+ 'Ẳ' => 'ẳ',
+ 'Ẵ' => 'ẵ',
+ 'Ặ' => 'ặ',
+ 'Ẹ' => 'ẹ',
+ 'Ẻ' => 'ẻ',
+ 'Ẽ' => 'ẽ',
+ 'Ế' => 'ế',
+ 'Ề' => 'ề',
+ 'Ể' => 'ể',
+ 'Ễ' => 'ễ',
+ 'Ệ' => 'ệ',
+ 'Ỉ' => 'ỉ',
+ 'Ị' => 'ị',
+ 'Ọ' => 'ọ',
+ 'Ỏ' => 'ỏ',
+ 'Ố' => 'ố',
+ 'Ồ' => 'ồ',
+ 'Ổ' => 'ổ',
+ 'Ỗ' => 'ỗ',
+ 'Ộ' => 'ộ',
+ 'Ớ' => 'ớ',
+ 'Ờ' => 'ờ',
+ 'Ở' => 'ở',
+ 'Ỡ' => 'ỡ',
+ 'Ợ' => 'ợ',
+ 'Ụ' => 'ụ',
+ 'Ủ' => 'ủ',
+ 'Ứ' => 'ứ',
+ 'Ừ' => 'ừ',
+ 'Ử' => 'ử',
+ 'Ữ' => 'ữ',
+ 'Ự' => 'ự',
+ 'Ỳ' => 'ỳ',
+ 'Ỵ' => 'ỵ',
+ 'Ỷ' => 'ỷ',
+ 'Ỹ' => 'ỹ',
+ 'Ỻ' => 'ỻ',
+ 'Ỽ' => 'ỽ',
+ 'Ỿ' => 'ỿ',
+ 'Ἀ' => 'ἀ',
+ 'Ἁ' => 'ἁ',
+ 'Ἂ' => 'ἂ',
+ 'Ἃ' => 'ἃ',
+ 'Ἄ' => 'ἄ',
+ 'Ἅ' => 'ἅ',
+ 'Ἆ' => 'ἆ',
+ 'Ἇ' => 'ἇ',
+ 'Ἐ' => 'ἐ',
+ 'Ἑ' => 'ἑ',
+ 'Ἒ' => 'ἒ',
+ 'Ἓ' => 'ἓ',
+ 'Ἔ' => 'ἔ',
+ 'Ἕ' => 'ἕ',
+ 'Ἠ' => 'ἠ',
+ 'Ἡ' => 'ἡ',
+ 'Ἢ' => 'ἢ',
+ 'Ἣ' => 'ἣ',
+ 'Ἤ' => 'ἤ',
+ 'Ἥ' => 'ἥ',
+ 'Ἦ' => 'ἦ',
+ 'Ἧ' => 'ἧ',
+ 'Ἰ' => 'ἰ',
+ 'Ἱ' => 'ἱ',
+ 'Ἲ' => 'ἲ',
+ 'Ἳ' => 'ἳ',
+ 'Ἴ' => 'ἴ',
+ 'Ἵ' => 'ἵ',
+ 'Ἶ' => 'ἶ',
+ 'Ἷ' => 'ἷ',
+ 'Ὀ' => 'ὀ',
+ 'Ὁ' => 'ὁ',
+ 'Ὂ' => 'ὂ',
+ 'Ὃ' => 'ὃ',
+ 'Ὄ' => 'ὄ',
+ 'Ὅ' => 'ὅ',
+ 'Ὑ' => 'ὑ',
+ 'Ὓ' => 'ὓ',
+ 'Ὕ' => 'ὕ',
+ 'Ὗ' => 'ὗ',
+ 'Ὠ' => 'ὠ',
+ 'Ὡ' => 'ὡ',
+ 'Ὢ' => 'ὢ',
+ 'Ὣ' => 'ὣ',
+ 'Ὤ' => 'ὤ',
+ 'Ὥ' => 'ὥ',
+ 'Ὦ' => 'ὦ',
+ 'Ὧ' => 'ὧ',
+ 'ᾈ' => 'ᾀ',
+ 'ᾉ' => 'ᾁ',
+ 'ᾊ' => 'ᾂ',
+ 'ᾋ' => 'ᾃ',
+ 'ᾌ' => 'ᾄ',
+ 'ᾍ' => 'ᾅ',
+ 'ᾎ' => 'ᾆ',
+ 'ᾏ' => 'ᾇ',
+ 'ᾘ' => 'ᾐ',
+ 'ᾙ' => 'ᾑ',
+ 'ᾚ' => 'ᾒ',
+ 'ᾛ' => 'ᾓ',
+ 'ᾜ' => 'ᾔ',
+ 'ᾝ' => 'ᾕ',
+ 'ᾞ' => 'ᾖ',
+ 'ᾟ' => 'ᾗ',
+ 'ᾨ' => 'ᾠ',
+ 'ᾩ' => 'ᾡ',
+ 'ᾪ' => 'ᾢ',
+ 'ᾫ' => 'ᾣ',
+ 'ᾬ' => 'ᾤ',
+ 'ᾭ' => 'ᾥ',
+ 'ᾮ' => 'ᾦ',
+ 'ᾯ' => 'ᾧ',
+ 'Ᾰ' => 'ᾰ',
+ 'Ᾱ' => 'ᾱ',
+ 'Ὰ' => 'ὰ',
+ 'Ά' => 'ά',
+ 'ᾼ' => 'ᾳ',
+ 'Ὲ' => 'ὲ',
+ 'Έ' => 'έ',
+ 'Ὴ' => 'ὴ',
+ 'Ή' => 'ή',
+ 'ῌ' => 'ῃ',
+ 'Ῐ' => 'ῐ',
+ 'Ῑ' => 'ῑ',
+ 'Ὶ' => 'ὶ',
+ 'Ί' => 'ί',
+ 'Ῠ' => 'ῠ',
+ 'Ῡ' => 'ῡ',
+ 'Ὺ' => 'ὺ',
+ 'Ύ' => 'ύ',
+ 'Ῥ' => 'ῥ',
+ 'Ὸ' => 'ὸ',
+ 'Ό' => 'ό',
+ 'Ὼ' => 'ὼ',
+ 'Ώ' => 'ώ',
+ 'ῼ' => 'ῳ',
+ 'Ω' => 'ω',
+ 'K' => 'k',
+ 'Å' => 'å',
+ 'Ⅎ' => 'ⅎ',
+ 'Ⅰ' => 'ⅰ',
+ 'Ⅱ' => 'ⅱ',
+ 'Ⅲ' => 'ⅲ',
+ 'Ⅳ' => 'ⅳ',
+ 'Ⅴ' => 'ⅴ',
+ 'Ⅵ' => 'ⅵ',
+ 'Ⅶ' => 'ⅶ',
+ 'Ⅷ' => 'ⅷ',
+ 'Ⅸ' => 'ⅸ',
+ 'Ⅹ' => 'ⅹ',
+ 'Ⅺ' => 'ⅺ',
+ 'Ⅻ' => 'ⅻ',
+ 'Ⅼ' => 'ⅼ',
+ 'Ⅽ' => 'ⅽ',
+ 'Ⅾ' => 'ⅾ',
+ 'Ⅿ' => 'ⅿ',
+ 'Ↄ' => 'ↄ',
+ 'Ⓐ' => 'ⓐ',
+ 'Ⓑ' => 'ⓑ',
+ 'Ⓒ' => 'ⓒ',
+ 'Ⓓ' => 'ⓓ',
+ 'Ⓔ' => 'ⓔ',
+ 'Ⓕ' => 'ⓕ',
+ 'Ⓖ' => 'ⓖ',
+ 'Ⓗ' => 'ⓗ',
+ 'Ⓘ' => 'ⓘ',
+ 'Ⓙ' => 'ⓙ',
+ 'Ⓚ' => 'ⓚ',
+ 'Ⓛ' => 'ⓛ',
+ 'Ⓜ' => 'ⓜ',
+ 'Ⓝ' => 'ⓝ',
+ 'Ⓞ' => 'ⓞ',
+ 'Ⓟ' => 'ⓟ',
+ 'Ⓠ' => 'ⓠ',
+ 'Ⓡ' => 'ⓡ',
+ 'Ⓢ' => 'ⓢ',
+ 'Ⓣ' => 'ⓣ',
+ 'Ⓤ' => 'ⓤ',
+ 'Ⓥ' => 'ⓥ',
+ 'Ⓦ' => 'ⓦ',
+ 'Ⓧ' => 'ⓧ',
+ 'Ⓨ' => 'ⓨ',
+ 'Ⓩ' => 'ⓩ',
+ 'Ⰰ' => 'ⰰ',
+ 'Ⰱ' => 'ⰱ',
+ 'Ⰲ' => 'ⰲ',
+ 'Ⰳ' => 'ⰳ',
+ 'Ⰴ' => 'ⰴ',
+ 'Ⰵ' => 'ⰵ',
+ 'Ⰶ' => 'ⰶ',
+ 'Ⰷ' => 'ⰷ',
+ 'Ⰸ' => 'ⰸ',
+ 'Ⰹ' => 'ⰹ',
+ 'Ⰺ' => 'ⰺ',
+ 'Ⰻ' => 'ⰻ',
+ 'Ⰼ' => 'ⰼ',
+ 'Ⰽ' => 'ⰽ',
+ 'Ⰾ' => 'ⰾ',
+ 'Ⰿ' => 'ⰿ',
+ 'Ⱀ' => 'ⱀ',
+ 'Ⱁ' => 'ⱁ',
+ 'Ⱂ' => 'ⱂ',
+ 'Ⱃ' => 'ⱃ',
+ 'Ⱄ' => 'ⱄ',
+ 'Ⱅ' => 'ⱅ',
+ 'Ⱆ' => 'ⱆ',
+ 'Ⱇ' => 'ⱇ',
+ 'Ⱈ' => 'ⱈ',
+ 'Ⱉ' => 'ⱉ',
+ 'Ⱊ' => 'ⱊ',
+ 'Ⱋ' => 'ⱋ',
+ 'Ⱌ' => 'ⱌ',
+ 'Ⱍ' => 'ⱍ',
+ 'Ⱎ' => 'ⱎ',
+ 'Ⱏ' => 'ⱏ',
+ 'Ⱐ' => 'ⱐ',
+ 'Ⱑ' => 'ⱑ',
+ 'Ⱒ' => 'ⱒ',
+ 'Ⱓ' => 'ⱓ',
+ 'Ⱔ' => 'ⱔ',
+ 'Ⱕ' => 'ⱕ',
+ 'Ⱖ' => 'ⱖ',
+ 'Ⱗ' => 'ⱗ',
+ 'Ⱘ' => 'ⱘ',
+ 'Ⱙ' => 'ⱙ',
+ 'Ⱚ' => 'ⱚ',
+ 'Ⱛ' => 'ⱛ',
+ 'Ⱜ' => 'ⱜ',
+ 'Ⱝ' => 'ⱝ',
+ 'Ⱞ' => 'ⱞ',
+ 'Ⱡ' => 'ⱡ',
+ 'Ɫ' => 'ɫ',
+ 'Ᵽ' => 'ᵽ',
+ 'Ɽ' => 'ɽ',
+ 'Ⱨ' => 'ⱨ',
+ 'Ⱪ' => 'ⱪ',
+ 'Ⱬ' => 'ⱬ',
+ 'Ɑ' => 'ɑ',
+ 'Ɱ' => 'ɱ',
+ 'Ɐ' => 'ɐ',
+ 'Ɒ' => 'ɒ',
+ 'Ⱳ' => 'ⱳ',
+ 'Ⱶ' => 'ⱶ',
+ 'Ȿ' => 'ȿ',
+ 'Ɀ' => 'ɀ',
+ 'Ⲁ' => 'ⲁ',
+ 'Ⲃ' => 'ⲃ',
+ 'Ⲅ' => 'ⲅ',
+ 'Ⲇ' => 'ⲇ',
+ 'Ⲉ' => 'ⲉ',
+ 'Ⲋ' => 'ⲋ',
+ 'Ⲍ' => 'ⲍ',
+ 'Ⲏ' => 'ⲏ',
+ 'Ⲑ' => 'ⲑ',
+ 'Ⲓ' => 'ⲓ',
+ 'Ⲕ' => 'ⲕ',
+ 'Ⲗ' => 'ⲗ',
+ 'Ⲙ' => 'ⲙ',
+ 'Ⲛ' => 'ⲛ',
+ 'Ⲝ' => 'ⲝ',
+ 'Ⲟ' => 'ⲟ',
+ 'Ⲡ' => 'ⲡ',
+ 'Ⲣ' => 'ⲣ',
+ 'Ⲥ' => 'ⲥ',
+ 'Ⲧ' => 'ⲧ',
+ 'Ⲩ' => 'ⲩ',
+ 'Ⲫ' => 'ⲫ',
+ 'Ⲭ' => 'ⲭ',
+ 'Ⲯ' => 'ⲯ',
+ 'Ⲱ' => 'ⲱ',
+ 'Ⲳ' => 'ⲳ',
+ 'Ⲵ' => 'ⲵ',
+ 'Ⲷ' => 'ⲷ',
+ 'Ⲹ' => 'ⲹ',
+ 'Ⲻ' => 'ⲻ',
+ 'Ⲽ' => 'ⲽ',
+ 'Ⲿ' => 'ⲿ',
+ 'Ⳁ' => 'ⳁ',
+ 'Ⳃ' => 'ⳃ',
+ 'Ⳅ' => 'ⳅ',
+ 'Ⳇ' => 'ⳇ',
+ 'Ⳉ' => 'ⳉ',
+ 'Ⳋ' => 'ⳋ',
+ 'Ⳍ' => 'ⳍ',
+ 'Ⳏ' => 'ⳏ',
+ 'Ⳑ' => 'ⳑ',
+ 'Ⳓ' => 'ⳓ',
+ 'Ⳕ' => 'ⳕ',
+ 'Ⳗ' => 'ⳗ',
+ 'Ⳙ' => 'ⳙ',
+ 'Ⳛ' => 'ⳛ',
+ 'Ⳝ' => 'ⳝ',
+ 'Ⳟ' => 'ⳟ',
+ 'Ⳡ' => 'ⳡ',
+ 'Ⳣ' => 'ⳣ',
+ 'Ⳬ' => 'ⳬ',
+ 'Ⳮ' => 'ⳮ',
+ 'Ⳳ' => 'ⳳ',
+ 'Ꙁ' => 'ꙁ',
+ 'Ꙃ' => 'ꙃ',
+ 'Ꙅ' => 'ꙅ',
+ 'Ꙇ' => 'ꙇ',
+ 'Ꙉ' => 'ꙉ',
+ 'Ꙋ' => 'ꙋ',
+ 'Ꙍ' => 'ꙍ',
+ 'Ꙏ' => 'ꙏ',
+ 'Ꙑ' => 'ꙑ',
+ 'Ꙓ' => 'ꙓ',
+ 'Ꙕ' => 'ꙕ',
+ 'Ꙗ' => 'ꙗ',
+ 'Ꙙ' => 'ꙙ',
+ 'Ꙛ' => 'ꙛ',
+ 'Ꙝ' => 'ꙝ',
+ 'Ꙟ' => 'ꙟ',
+ 'Ꙡ' => 'ꙡ',
+ 'Ꙣ' => 'ꙣ',
+ 'Ꙥ' => 'ꙥ',
+ 'Ꙧ' => 'ꙧ',
+ 'Ꙩ' => 'ꙩ',
+ 'Ꙫ' => 'ꙫ',
+ 'Ꙭ' => 'ꙭ',
+ 'Ꚁ' => 'ꚁ',
+ 'Ꚃ' => 'ꚃ',
+ 'Ꚅ' => 'ꚅ',
+ 'Ꚇ' => 'ꚇ',
+ 'Ꚉ' => 'ꚉ',
+ 'Ꚋ' => 'ꚋ',
+ 'Ꚍ' => 'ꚍ',
+ 'Ꚏ' => 'ꚏ',
+ 'Ꚑ' => 'ꚑ',
+ 'Ꚓ' => 'ꚓ',
+ 'Ꚕ' => 'ꚕ',
+ 'Ꚗ' => 'ꚗ',
+ 'Ꚙ' => 'ꚙ',
+ 'Ꚛ' => 'ꚛ',
+ 'Ꜣ' => 'ꜣ',
+ 'Ꜥ' => 'ꜥ',
+ 'Ꜧ' => 'ꜧ',
+ 'Ꜩ' => 'ꜩ',
+ 'Ꜫ' => 'ꜫ',
+ 'Ꜭ' => 'ꜭ',
+ 'Ꜯ' => 'ꜯ',
+ 'Ꜳ' => 'ꜳ',
+ 'Ꜵ' => 'ꜵ',
+ 'Ꜷ' => 'ꜷ',
+ 'Ꜹ' => 'ꜹ',
+ 'Ꜻ' => 'ꜻ',
+ 'Ꜽ' => 'ꜽ',
+ 'Ꜿ' => 'ꜿ',
+ 'Ꝁ' => 'ꝁ',
+ 'Ꝃ' => 'ꝃ',
+ 'Ꝅ' => 'ꝅ',
+ 'Ꝇ' => 'ꝇ',
+ 'Ꝉ' => 'ꝉ',
+ 'Ꝋ' => 'ꝋ',
+ 'Ꝍ' => 'ꝍ',
+ 'Ꝏ' => 'ꝏ',
+ 'Ꝑ' => 'ꝑ',
+ 'Ꝓ' => 'ꝓ',
+ 'Ꝕ' => 'ꝕ',
+ 'Ꝗ' => 'ꝗ',
+ 'Ꝙ' => 'ꝙ',
+ 'Ꝛ' => 'ꝛ',
+ 'Ꝝ' => 'ꝝ',
+ 'Ꝟ' => 'ꝟ',
+ 'Ꝡ' => 'ꝡ',
+ 'Ꝣ' => 'ꝣ',
+ 'Ꝥ' => 'ꝥ',
+ 'Ꝧ' => 'ꝧ',
+ 'Ꝩ' => 'ꝩ',
+ 'Ꝫ' => 'ꝫ',
+ 'Ꝭ' => 'ꝭ',
+ 'Ꝯ' => 'ꝯ',
+ 'Ꝺ' => 'ꝺ',
+ 'Ꝼ' => 'ꝼ',
+ 'Ᵹ' => 'ᵹ',
+ 'Ꝿ' => 'ꝿ',
+ 'Ꞁ' => 'ꞁ',
+ 'Ꞃ' => 'ꞃ',
+ 'Ꞅ' => 'ꞅ',
+ 'Ꞇ' => 'ꞇ',
+ 'Ꞌ' => 'ꞌ',
+ 'Ɥ' => 'ɥ',
+ 'Ꞑ' => 'ꞑ',
+ 'Ꞓ' => 'ꞓ',
+ 'Ꞗ' => 'ꞗ',
+ 'Ꞙ' => 'ꞙ',
+ 'Ꞛ' => 'ꞛ',
+ 'Ꞝ' => 'ꞝ',
+ 'Ꞟ' => 'ꞟ',
+ 'Ꞡ' => 'ꞡ',
+ 'Ꞣ' => 'ꞣ',
+ 'Ꞥ' => 'ꞥ',
+ 'Ꞧ' => 'ꞧ',
+ 'Ꞩ' => 'ꞩ',
+ 'Ɦ' => 'ɦ',
+ 'Ɜ' => 'ɜ',
+ 'Ɡ' => 'ɡ',
+ 'Ɬ' => 'ɬ',
+ 'Ʞ' => 'ʞ',
+ 'Ʇ' => 'ʇ',
+ 'A' => 'a',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'E' => 'e',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'M' => 'm',
+ 'N' => 'n',
+ 'O' => 'o',
+ 'P' => 'p',
+ 'Q' => 'q',
+ 'R' => 'r',
+ 'S' => 's',
+ 'T' => 't',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'W' => 'w',
+ 'X' => 'x',
+ 'Y' => 'y',
+ 'Z' => 'z',
+ '𐐀' => '𐐨',
+ '𐐁' => '𐐩',
+ '𐐂' => '𐐪',
+ '𐐃' => '𐐫',
+ '𐐄' => '𐐬',
+ '𐐅' => '𐐭',
+ '𐐆' => '𐐮',
+ '𐐇' => '𐐯',
+ '𐐈' => '𐐰',
+ '𐐉' => '𐐱',
+ '𐐊' => '𐐲',
+ '𐐋' => '𐐳',
+ '𐐌' => '𐐴',
+ '𐐍' => '𐐵',
+ '𐐎' => '𐐶',
+ '𐐏' => '𐐷',
+ '𐐐' => '𐐸',
+ '𐐑' => '𐐹',
+ '𐐒' => '𐐺',
+ '𐐓' => '𐐻',
+ '𐐔' => '𐐼',
+ '𐐕' => '𐐽',
+ '𐐖' => '𐐾',
+ '𐐗' => '𐐿',
+ '𐐘' => '𐑀',
+ '𐐙' => '𐑁',
+ '𐐚' => '𐑂',
+ '𐐛' => '𐑃',
+ '𐐜' => '𐑄',
+ '𐐝' => '𐑅',
+ '𐐞' => '𐑆',
+ '𐐟' => '𐑇',
+ '𐐠' => '𐑈',
+ '𐐡' => '𐑉',
+ '𐐢' => '𐑊',
+ '𐐣' => '𐑋',
+ '𐐤' => '𐑌',
+ '𐐥' => '𐑍',
+ '𐐦' => '𐑎',
+ '𐐧' => '𐑏',
+ '𑢠' => '𑣀',
+ '𑢡' => '𑣁',
+ '𑢢' => '𑣂',
+ '𑢣' => '𑣃',
+ '𑢤' => '𑣄',
+ '𑢥' => '𑣅',
+ '𑢦' => '𑣆',
+ '𑢧' => '𑣇',
+ '𑢨' => '𑣈',
+ '𑢩' => '𑣉',
+ '𑢪' => '𑣊',
+ '𑢫' => '𑣋',
+ '𑢬' => '𑣌',
+ '𑢭' => '𑣍',
+ '𑢮' => '𑣎',
+ '𑢯' => '𑣏',
+ '𑢰' => '𑣐',
+ '𑢱' => '𑣑',
+ '𑢲' => '𑣒',
+ '𑢳' => '𑣓',
+ '𑢴' => '𑣔',
+ '𑢵' => '𑣕',
+ '𑢶' => '𑣖',
+ '𑢷' => '𑣗',
+ '𑢸' => '𑣘',
+ '𑢹' => '𑣙',
+ '𑢺' => '𑣚',
+ '𑢻' => '𑣛',
+ '𑢼' => '𑣜',
+ '𑢽' => '𑣝',
+ '𑢾' => '𑣞',
+ '𑢿' => '𑣟',
+);
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
new file mode 100644
index 0000000..2a8f6e7
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
@@ -0,0 +1,5 @@
+ 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'e' => 'E',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'm' => 'M',
+ 'n' => 'N',
+ 'o' => 'O',
+ 'p' => 'P',
+ 'q' => 'Q',
+ 'r' => 'R',
+ 's' => 'S',
+ 't' => 'T',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'w' => 'W',
+ 'x' => 'X',
+ 'y' => 'Y',
+ 'z' => 'Z',
+ 'µ' => 'Μ',
+ 'à' => 'À',
+ 'á' => 'Á',
+ 'â' => 'Â',
+ 'ã' => 'Ã',
+ 'ä' => 'Ä',
+ 'å' => 'Å',
+ 'æ' => 'Æ',
+ 'ç' => 'Ç',
+ 'è' => 'È',
+ 'é' => 'É',
+ 'ê' => 'Ê',
+ 'ë' => 'Ë',
+ 'ì' => 'Ì',
+ 'í' => 'Í',
+ 'î' => 'Î',
+ 'ï' => 'Ï',
+ 'ð' => 'Ð',
+ 'ñ' => 'Ñ',
+ 'ò' => 'Ò',
+ 'ó' => 'Ó',
+ 'ô' => 'Ô',
+ 'õ' => 'Õ',
+ 'ö' => 'Ö',
+ 'ø' => 'Ø',
+ 'ù' => 'Ù',
+ 'ú' => 'Ú',
+ 'û' => 'Û',
+ 'ü' => 'Ü',
+ 'ý' => 'Ý',
+ 'þ' => 'Þ',
+ 'ÿ' => 'Ÿ',
+ 'ā' => 'Ā',
+ 'ă' => 'Ă',
+ 'ą' => 'Ą',
+ 'ć' => 'Ć',
+ 'ĉ' => 'Ĉ',
+ 'ċ' => 'Ċ',
+ 'č' => 'Č',
+ 'ď' => 'Ď',
+ 'đ' => 'Đ',
+ 'ē' => 'Ē',
+ 'ĕ' => 'Ĕ',
+ 'ė' => 'Ė',
+ 'ę' => 'Ę',
+ 'ě' => 'Ě',
+ 'ĝ' => 'Ĝ',
+ 'ğ' => 'Ğ',
+ 'ġ' => 'Ġ',
+ 'ģ' => 'Ģ',
+ 'ĥ' => 'Ĥ',
+ 'ħ' => 'Ħ',
+ 'ĩ' => 'Ĩ',
+ 'ī' => 'Ī',
+ 'ĭ' => 'Ĭ',
+ 'į' => 'Į',
+ 'ı' => 'I',
+ 'ij' => 'IJ',
+ 'ĵ' => 'Ĵ',
+ 'ķ' => 'Ķ',
+ 'ĺ' => 'Ĺ',
+ 'ļ' => 'Ļ',
+ 'ľ' => 'Ľ',
+ 'ŀ' => 'Ŀ',
+ 'ł' => 'Ł',
+ 'ń' => 'Ń',
+ 'ņ' => 'Ņ',
+ 'ň' => 'Ň',
+ 'ŋ' => 'Ŋ',
+ 'ō' => 'Ō',
+ 'ŏ' => 'Ŏ',
+ 'ő' => 'Ő',
+ 'œ' => 'Œ',
+ 'ŕ' => 'Ŕ',
+ 'ŗ' => 'Ŗ',
+ 'ř' => 'Ř',
+ 'ś' => 'Ś',
+ 'ŝ' => 'Ŝ',
+ 'ş' => 'Ş',
+ 'š' => 'Š',
+ 'ţ' => 'Ţ',
+ 'ť' => 'Ť',
+ 'ŧ' => 'Ŧ',
+ 'ũ' => 'Ũ',
+ 'ū' => 'Ū',
+ 'ŭ' => 'Ŭ',
+ 'ů' => 'Ů',
+ 'ű' => 'Ű',
+ 'ų' => 'Ų',
+ 'ŵ' => 'Ŵ',
+ 'ŷ' => 'Ŷ',
+ 'ź' => 'Ź',
+ 'ż' => 'Ż',
+ 'ž' => 'Ž',
+ 'ſ' => 'S',
+ 'ƀ' => 'Ƀ',
+ 'ƃ' => 'Ƃ',
+ 'ƅ' => 'Ƅ',
+ 'ƈ' => 'Ƈ',
+ 'ƌ' => 'Ƌ',
+ 'ƒ' => 'Ƒ',
+ 'ƕ' => 'Ƕ',
+ 'ƙ' => 'Ƙ',
+ 'ƚ' => 'Ƚ',
+ 'ƞ' => 'Ƞ',
+ 'ơ' => 'Ơ',
+ 'ƣ' => 'Ƣ',
+ 'ƥ' => 'Ƥ',
+ 'ƨ' => 'Ƨ',
+ 'ƭ' => 'Ƭ',
+ 'ư' => 'Ư',
+ 'ƴ' => 'Ƴ',
+ 'ƶ' => 'Ƶ',
+ 'ƹ' => 'Ƹ',
+ 'ƽ' => 'Ƽ',
+ 'ƿ' => 'Ƿ',
+ 'Dž' => 'DŽ',
+ 'dž' => 'DŽ',
+ 'Lj' => 'LJ',
+ 'lj' => 'LJ',
+ 'Nj' => 'NJ',
+ 'nj' => 'NJ',
+ 'ǎ' => 'Ǎ',
+ 'ǐ' => 'Ǐ',
+ 'ǒ' => 'Ǒ',
+ 'ǔ' => 'Ǔ',
+ 'ǖ' => 'Ǖ',
+ 'ǘ' => 'Ǘ',
+ 'ǚ' => 'Ǚ',
+ 'ǜ' => 'Ǜ',
+ 'ǝ' => 'Ǝ',
+ 'ǟ' => 'Ǟ',
+ 'ǡ' => 'Ǡ',
+ 'ǣ' => 'Ǣ',
+ 'ǥ' => 'Ǥ',
+ 'ǧ' => 'Ǧ',
+ 'ǩ' => 'Ǩ',
+ 'ǫ' => 'Ǫ',
+ 'ǭ' => 'Ǭ',
+ 'ǯ' => 'Ǯ',
+ 'Dz' => 'DZ',
+ 'dz' => 'DZ',
+ 'ǵ' => 'Ǵ',
+ 'ǹ' => 'Ǹ',
+ 'ǻ' => 'Ǻ',
+ 'ǽ' => 'Ǽ',
+ 'ǿ' => 'Ǿ',
+ 'ȁ' => 'Ȁ',
+ 'ȃ' => 'Ȃ',
+ 'ȅ' => 'Ȅ',
+ 'ȇ' => 'Ȇ',
+ 'ȉ' => 'Ȉ',
+ 'ȋ' => 'Ȋ',
+ 'ȍ' => 'Ȍ',
+ 'ȏ' => 'Ȏ',
+ 'ȑ' => 'Ȑ',
+ 'ȓ' => 'Ȓ',
+ 'ȕ' => 'Ȕ',
+ 'ȗ' => 'Ȗ',
+ 'ș' => 'Ș',
+ 'ț' => 'Ț',
+ 'ȝ' => 'Ȝ',
+ 'ȟ' => 'Ȟ',
+ 'ȣ' => 'Ȣ',
+ 'ȥ' => 'Ȥ',
+ 'ȧ' => 'Ȧ',
+ 'ȩ' => 'Ȩ',
+ 'ȫ' => 'Ȫ',
+ 'ȭ' => 'Ȭ',
+ 'ȯ' => 'Ȯ',
+ 'ȱ' => 'Ȱ',
+ 'ȳ' => 'Ȳ',
+ 'ȼ' => 'Ȼ',
+ 'ȿ' => 'Ȿ',
+ 'ɀ' => 'Ɀ',
+ 'ɂ' => 'Ɂ',
+ 'ɇ' => 'Ɇ',
+ 'ɉ' => 'Ɉ',
+ 'ɋ' => 'Ɋ',
+ 'ɍ' => 'Ɍ',
+ 'ɏ' => 'Ɏ',
+ 'ɐ' => 'Ɐ',
+ 'ɑ' => 'Ɑ',
+ 'ɒ' => 'Ɒ',
+ 'ɓ' => 'Ɓ',
+ 'ɔ' => 'Ɔ',
+ 'ɖ' => 'Ɖ',
+ 'ɗ' => 'Ɗ',
+ 'ə' => 'Ə',
+ 'ɛ' => 'Ɛ',
+ 'ɜ' => 'Ɜ',
+ 'ɠ' => 'Ɠ',
+ 'ɡ' => 'Ɡ',
+ 'ɣ' => 'Ɣ',
+ 'ɥ' => 'Ɥ',
+ 'ɦ' => 'Ɦ',
+ 'ɨ' => 'Ɨ',
+ 'ɩ' => 'Ɩ',
+ 'ɫ' => 'Ɫ',
+ 'ɬ' => 'Ɬ',
+ 'ɯ' => 'Ɯ',
+ 'ɱ' => 'Ɱ',
+ 'ɲ' => 'Ɲ',
+ 'ɵ' => 'Ɵ',
+ 'ɽ' => 'Ɽ',
+ 'ʀ' => 'Ʀ',
+ 'ʃ' => 'Ʃ',
+ 'ʇ' => 'Ʇ',
+ 'ʈ' => 'Ʈ',
+ 'ʉ' => 'Ʉ',
+ 'ʊ' => 'Ʊ',
+ 'ʋ' => 'Ʋ',
+ 'ʌ' => 'Ʌ',
+ 'ʒ' => 'Ʒ',
+ 'ʞ' => 'Ʞ',
+ 'ͅ' => 'Ι',
+ 'ͱ' => 'Ͱ',
+ 'ͳ' => 'Ͳ',
+ 'ͷ' => 'Ͷ',
+ 'ͻ' => 'Ͻ',
+ 'ͼ' => 'Ͼ',
+ 'ͽ' => 'Ͽ',
+ 'ά' => 'Ά',
+ 'έ' => 'Έ',
+ 'ή' => 'Ή',
+ 'ί' => 'Ί',
+ 'α' => 'Α',
+ 'β' => 'Β',
+ 'γ' => 'Γ',
+ 'δ' => 'Δ',
+ 'ε' => 'Ε',
+ 'ζ' => 'Ζ',
+ 'η' => 'Η',
+ 'θ' => 'Θ',
+ 'ι' => 'Ι',
+ 'κ' => 'Κ',
+ 'λ' => 'Λ',
+ 'μ' => 'Μ',
+ 'ν' => 'Ν',
+ 'ξ' => 'Ξ',
+ 'ο' => 'Ο',
+ 'π' => 'Π',
+ 'ρ' => 'Ρ',
+ 'ς' => 'Σ',
+ 'σ' => 'Σ',
+ 'τ' => 'Τ',
+ 'υ' => 'Υ',
+ 'φ' => 'Φ',
+ 'χ' => 'Χ',
+ 'ψ' => 'Ψ',
+ 'ω' => 'Ω',
+ 'ϊ' => 'Ϊ',
+ 'ϋ' => 'Ϋ',
+ 'ό' => 'Ό',
+ 'ύ' => 'Ύ',
+ 'ώ' => 'Ώ',
+ 'ϐ' => 'Β',
+ 'ϑ' => 'Θ',
+ 'ϕ' => 'Φ',
+ 'ϖ' => 'Π',
+ 'ϗ' => 'Ϗ',
+ 'ϙ' => 'Ϙ',
+ 'ϛ' => 'Ϛ',
+ 'ϝ' => 'Ϝ',
+ 'ϟ' => 'Ϟ',
+ 'ϡ' => 'Ϡ',
+ 'ϣ' => 'Ϣ',
+ 'ϥ' => 'Ϥ',
+ 'ϧ' => 'Ϧ',
+ 'ϩ' => 'Ϩ',
+ 'ϫ' => 'Ϫ',
+ 'ϭ' => 'Ϭ',
+ 'ϯ' => 'Ϯ',
+ 'ϰ' => 'Κ',
+ 'ϱ' => 'Ρ',
+ 'ϲ' => 'Ϲ',
+ 'ϳ' => 'Ϳ',
+ 'ϵ' => 'Ε',
+ 'ϸ' => 'Ϸ',
+ 'ϻ' => 'Ϻ',
+ 'а' => 'А',
+ 'б' => 'Б',
+ 'в' => 'В',
+ 'г' => 'Г',
+ 'д' => 'Д',
+ 'е' => 'Е',
+ 'ж' => 'Ж',
+ 'з' => 'З',
+ 'и' => 'И',
+ 'й' => 'Й',
+ 'к' => 'К',
+ 'л' => 'Л',
+ 'м' => 'М',
+ 'н' => 'Н',
+ 'о' => 'О',
+ 'п' => 'П',
+ 'р' => 'Р',
+ 'с' => 'С',
+ 'т' => 'Т',
+ 'у' => 'У',
+ 'ф' => 'Ф',
+ 'х' => 'Х',
+ 'ц' => 'Ц',
+ 'ч' => 'Ч',
+ 'ш' => 'Ш',
+ 'щ' => 'Щ',
+ 'ъ' => 'Ъ',
+ 'ы' => 'Ы',
+ 'ь' => 'Ь',
+ 'э' => 'Э',
+ 'ю' => 'Ю',
+ 'я' => 'Я',
+ 'ѐ' => 'Ѐ',
+ 'ё' => 'Ё',
+ 'ђ' => 'Ђ',
+ 'ѓ' => 'Ѓ',
+ 'є' => 'Є',
+ 'ѕ' => 'Ѕ',
+ 'і' => 'І',
+ 'ї' => 'Ї',
+ 'ј' => 'Ј',
+ 'љ' => 'Љ',
+ 'њ' => 'Њ',
+ 'ћ' => 'Ћ',
+ 'ќ' => 'Ќ',
+ 'ѝ' => 'Ѝ',
+ 'ў' => 'Ў',
+ 'џ' => 'Џ',
+ 'ѡ' => 'Ѡ',
+ 'ѣ' => 'Ѣ',
+ 'ѥ' => 'Ѥ',
+ 'ѧ' => 'Ѧ',
+ 'ѩ' => 'Ѩ',
+ 'ѫ' => 'Ѫ',
+ 'ѭ' => 'Ѭ',
+ 'ѯ' => 'Ѯ',
+ 'ѱ' => 'Ѱ',
+ 'ѳ' => 'Ѳ',
+ 'ѵ' => 'Ѵ',
+ 'ѷ' => 'Ѷ',
+ 'ѹ' => 'Ѹ',
+ 'ѻ' => 'Ѻ',
+ 'ѽ' => 'Ѽ',
+ 'ѿ' => 'Ѿ',
+ 'ҁ' => 'Ҁ',
+ 'ҋ' => 'Ҋ',
+ 'ҍ' => 'Ҍ',
+ 'ҏ' => 'Ҏ',
+ 'ґ' => 'Ґ',
+ 'ғ' => 'Ғ',
+ 'ҕ' => 'Ҕ',
+ 'җ' => 'Җ',
+ 'ҙ' => 'Ҙ',
+ 'қ' => 'Қ',
+ 'ҝ' => 'Ҝ',
+ 'ҟ' => 'Ҟ',
+ 'ҡ' => 'Ҡ',
+ 'ң' => 'Ң',
+ 'ҥ' => 'Ҥ',
+ 'ҧ' => 'Ҧ',
+ 'ҩ' => 'Ҩ',
+ 'ҫ' => 'Ҫ',
+ 'ҭ' => 'Ҭ',
+ 'ү' => 'Ү',
+ 'ұ' => 'Ұ',
+ 'ҳ' => 'Ҳ',
+ 'ҵ' => 'Ҵ',
+ 'ҷ' => 'Ҷ',
+ 'ҹ' => 'Ҹ',
+ 'һ' => 'Һ',
+ 'ҽ' => 'Ҽ',
+ 'ҿ' => 'Ҿ',
+ 'ӂ' => 'Ӂ',
+ 'ӄ' => 'Ӄ',
+ 'ӆ' => 'Ӆ',
+ 'ӈ' => 'Ӈ',
+ 'ӊ' => 'Ӊ',
+ 'ӌ' => 'Ӌ',
+ 'ӎ' => 'Ӎ',
+ 'ӏ' => 'Ӏ',
+ 'ӑ' => 'Ӑ',
+ 'ӓ' => 'Ӓ',
+ 'ӕ' => 'Ӕ',
+ 'ӗ' => 'Ӗ',
+ 'ә' => 'Ә',
+ 'ӛ' => 'Ӛ',
+ 'ӝ' => 'Ӝ',
+ 'ӟ' => 'Ӟ',
+ 'ӡ' => 'Ӡ',
+ 'ӣ' => 'Ӣ',
+ 'ӥ' => 'Ӥ',
+ 'ӧ' => 'Ӧ',
+ 'ө' => 'Ө',
+ 'ӫ' => 'Ӫ',
+ 'ӭ' => 'Ӭ',
+ 'ӯ' => 'Ӯ',
+ 'ӱ' => 'Ӱ',
+ 'ӳ' => 'Ӳ',
+ 'ӵ' => 'Ӵ',
+ 'ӷ' => 'Ӷ',
+ 'ӹ' => 'Ӹ',
+ 'ӻ' => 'Ӻ',
+ 'ӽ' => 'Ӽ',
+ 'ӿ' => 'Ӿ',
+ 'ԁ' => 'Ԁ',
+ 'ԃ' => 'Ԃ',
+ 'ԅ' => 'Ԅ',
+ 'ԇ' => 'Ԇ',
+ 'ԉ' => 'Ԉ',
+ 'ԋ' => 'Ԋ',
+ 'ԍ' => 'Ԍ',
+ 'ԏ' => 'Ԏ',
+ 'ԑ' => 'Ԑ',
+ 'ԓ' => 'Ԓ',
+ 'ԕ' => 'Ԕ',
+ 'ԗ' => 'Ԗ',
+ 'ԙ' => 'Ԙ',
+ 'ԛ' => 'Ԛ',
+ 'ԝ' => 'Ԝ',
+ 'ԟ' => 'Ԟ',
+ 'ԡ' => 'Ԡ',
+ 'ԣ' => 'Ԣ',
+ 'ԥ' => 'Ԥ',
+ 'ԧ' => 'Ԧ',
+ 'ԩ' => 'Ԩ',
+ 'ԫ' => 'Ԫ',
+ 'ԭ' => 'Ԭ',
+ 'ԯ' => 'Ԯ',
+ 'ա' => 'Ա',
+ 'բ' => 'Բ',
+ 'գ' => 'Գ',
+ 'դ' => 'Դ',
+ 'ե' => 'Ե',
+ 'զ' => 'Զ',
+ 'է' => 'Է',
+ 'ը' => 'Ը',
+ 'թ' => 'Թ',
+ 'ժ' => 'Ժ',
+ 'ի' => 'Ի',
+ 'լ' => 'Լ',
+ 'խ' => 'Խ',
+ 'ծ' => 'Ծ',
+ 'կ' => 'Կ',
+ 'հ' => 'Հ',
+ 'ձ' => 'Ձ',
+ 'ղ' => 'Ղ',
+ 'ճ' => 'Ճ',
+ 'մ' => 'Մ',
+ 'յ' => 'Յ',
+ 'ն' => 'Ն',
+ 'շ' => 'Շ',
+ 'ո' => 'Ո',
+ 'չ' => 'Չ',
+ 'պ' => 'Պ',
+ 'ջ' => 'Ջ',
+ 'ռ' => 'Ռ',
+ 'ս' => 'Ս',
+ 'վ' => 'Վ',
+ 'տ' => 'Տ',
+ 'ր' => 'Ր',
+ 'ց' => 'Ց',
+ 'ւ' => 'Ւ',
+ 'փ' => 'Փ',
+ 'ք' => 'Ք',
+ 'օ' => 'Օ',
+ 'ֆ' => 'Ֆ',
+ 'ᵹ' => 'Ᵹ',
+ 'ᵽ' => 'Ᵽ',
+ 'ḁ' => 'Ḁ',
+ 'ḃ' => 'Ḃ',
+ 'ḅ' => 'Ḅ',
+ 'ḇ' => 'Ḇ',
+ 'ḉ' => 'Ḉ',
+ 'ḋ' => 'Ḋ',
+ 'ḍ' => 'Ḍ',
+ 'ḏ' => 'Ḏ',
+ 'ḑ' => 'Ḑ',
+ 'ḓ' => 'Ḓ',
+ 'ḕ' => 'Ḕ',
+ 'ḗ' => 'Ḗ',
+ 'ḙ' => 'Ḙ',
+ 'ḛ' => 'Ḛ',
+ 'ḝ' => 'Ḝ',
+ 'ḟ' => 'Ḟ',
+ 'ḡ' => 'Ḡ',
+ 'ḣ' => 'Ḣ',
+ 'ḥ' => 'Ḥ',
+ 'ḧ' => 'Ḧ',
+ 'ḩ' => 'Ḩ',
+ 'ḫ' => 'Ḫ',
+ 'ḭ' => 'Ḭ',
+ 'ḯ' => 'Ḯ',
+ 'ḱ' => 'Ḱ',
+ 'ḳ' => 'Ḳ',
+ 'ḵ' => 'Ḵ',
+ 'ḷ' => 'Ḷ',
+ 'ḹ' => 'Ḹ',
+ 'ḻ' => 'Ḻ',
+ 'ḽ' => 'Ḽ',
+ 'ḿ' => 'Ḿ',
+ 'ṁ' => 'Ṁ',
+ 'ṃ' => 'Ṃ',
+ 'ṅ' => 'Ṅ',
+ 'ṇ' => 'Ṇ',
+ 'ṉ' => 'Ṉ',
+ 'ṋ' => 'Ṋ',
+ 'ṍ' => 'Ṍ',
+ 'ṏ' => 'Ṏ',
+ 'ṑ' => 'Ṑ',
+ 'ṓ' => 'Ṓ',
+ 'ṕ' => 'Ṕ',
+ 'ṗ' => 'Ṗ',
+ 'ṙ' => 'Ṙ',
+ 'ṛ' => 'Ṛ',
+ 'ṝ' => 'Ṝ',
+ 'ṟ' => 'Ṟ',
+ 'ṡ' => 'Ṡ',
+ 'ṣ' => 'Ṣ',
+ 'ṥ' => 'Ṥ',
+ 'ṧ' => 'Ṧ',
+ 'ṩ' => 'Ṩ',
+ 'ṫ' => 'Ṫ',
+ 'ṭ' => 'Ṭ',
+ 'ṯ' => 'Ṯ',
+ 'ṱ' => 'Ṱ',
+ 'ṳ' => 'Ṳ',
+ 'ṵ' => 'Ṵ',
+ 'ṷ' => 'Ṷ',
+ 'ṹ' => 'Ṹ',
+ 'ṻ' => 'Ṻ',
+ 'ṽ' => 'Ṽ',
+ 'ṿ' => 'Ṿ',
+ 'ẁ' => 'Ẁ',
+ 'ẃ' => 'Ẃ',
+ 'ẅ' => 'Ẅ',
+ 'ẇ' => 'Ẇ',
+ 'ẉ' => 'Ẉ',
+ 'ẋ' => 'Ẋ',
+ 'ẍ' => 'Ẍ',
+ 'ẏ' => 'Ẏ',
+ 'ẑ' => 'Ẑ',
+ 'ẓ' => 'Ẓ',
+ 'ẕ' => 'Ẕ',
+ 'ẛ' => 'Ṡ',
+ 'ạ' => 'Ạ',
+ 'ả' => 'Ả',
+ 'ấ' => 'Ấ',
+ 'ầ' => 'Ầ',
+ 'ẩ' => 'Ẩ',
+ 'ẫ' => 'Ẫ',
+ 'ậ' => 'Ậ',
+ 'ắ' => 'Ắ',
+ 'ằ' => 'Ằ',
+ 'ẳ' => 'Ẳ',
+ 'ẵ' => 'Ẵ',
+ 'ặ' => 'Ặ',
+ 'ẹ' => 'Ẹ',
+ 'ẻ' => 'Ẻ',
+ 'ẽ' => 'Ẽ',
+ 'ế' => 'Ế',
+ 'ề' => 'Ề',
+ 'ể' => 'Ể',
+ 'ễ' => 'Ễ',
+ 'ệ' => 'Ệ',
+ 'ỉ' => 'Ỉ',
+ 'ị' => 'Ị',
+ 'ọ' => 'Ọ',
+ 'ỏ' => 'Ỏ',
+ 'ố' => 'Ố',
+ 'ồ' => 'Ồ',
+ 'ổ' => 'Ổ',
+ 'ỗ' => 'Ỗ',
+ 'ộ' => 'Ộ',
+ 'ớ' => 'Ớ',
+ 'ờ' => 'Ờ',
+ 'ở' => 'Ở',
+ 'ỡ' => 'Ỡ',
+ 'ợ' => 'Ợ',
+ 'ụ' => 'Ụ',
+ 'ủ' => 'Ủ',
+ 'ứ' => 'Ứ',
+ 'ừ' => 'Ừ',
+ 'ử' => 'Ử',
+ 'ữ' => 'Ữ',
+ 'ự' => 'Ự',
+ 'ỳ' => 'Ỳ',
+ 'ỵ' => 'Ỵ',
+ 'ỷ' => 'Ỷ',
+ 'ỹ' => 'Ỹ',
+ 'ỻ' => 'Ỻ',
+ 'ỽ' => 'Ỽ',
+ 'ỿ' => 'Ỿ',
+ 'ἀ' => 'Ἀ',
+ 'ἁ' => 'Ἁ',
+ 'ἂ' => 'Ἂ',
+ 'ἃ' => 'Ἃ',
+ 'ἄ' => 'Ἄ',
+ 'ἅ' => 'Ἅ',
+ 'ἆ' => 'Ἆ',
+ 'ἇ' => 'Ἇ',
+ 'ἐ' => 'Ἐ',
+ 'ἑ' => 'Ἑ',
+ 'ἒ' => 'Ἒ',
+ 'ἓ' => 'Ἓ',
+ 'ἔ' => 'Ἔ',
+ 'ἕ' => 'Ἕ',
+ 'ἠ' => 'Ἠ',
+ 'ἡ' => 'Ἡ',
+ 'ἢ' => 'Ἢ',
+ 'ἣ' => 'Ἣ',
+ 'ἤ' => 'Ἤ',
+ 'ἥ' => 'Ἥ',
+ 'ἦ' => 'Ἦ',
+ 'ἧ' => 'Ἧ',
+ 'ἰ' => 'Ἰ',
+ 'ἱ' => 'Ἱ',
+ 'ἲ' => 'Ἲ',
+ 'ἳ' => 'Ἳ',
+ 'ἴ' => 'Ἴ',
+ 'ἵ' => 'Ἵ',
+ 'ἶ' => 'Ἶ',
+ 'ἷ' => 'Ἷ',
+ 'ὀ' => 'Ὀ',
+ 'ὁ' => 'Ὁ',
+ 'ὂ' => 'Ὂ',
+ 'ὃ' => 'Ὃ',
+ 'ὄ' => 'Ὄ',
+ 'ὅ' => 'Ὅ',
+ 'ὑ' => 'Ὑ',
+ 'ὓ' => 'Ὓ',
+ 'ὕ' => 'Ὕ',
+ 'ὗ' => 'Ὗ',
+ 'ὠ' => 'Ὠ',
+ 'ὡ' => 'Ὡ',
+ 'ὢ' => 'Ὢ',
+ 'ὣ' => 'Ὣ',
+ 'ὤ' => 'Ὤ',
+ 'ὥ' => 'Ὥ',
+ 'ὦ' => 'Ὦ',
+ 'ὧ' => 'Ὧ',
+ 'ὰ' => 'Ὰ',
+ 'ά' => 'Ά',
+ 'ὲ' => 'Ὲ',
+ 'έ' => 'Έ',
+ 'ὴ' => 'Ὴ',
+ 'ή' => 'Ή',
+ 'ὶ' => 'Ὶ',
+ 'ί' => 'Ί',
+ 'ὸ' => 'Ὸ',
+ 'ό' => 'Ό',
+ 'ὺ' => 'Ὺ',
+ 'ύ' => 'Ύ',
+ 'ὼ' => 'Ὼ',
+ 'ώ' => 'Ώ',
+ 'ᾀ' => 'ᾈ',
+ 'ᾁ' => 'ᾉ',
+ 'ᾂ' => 'ᾊ',
+ 'ᾃ' => 'ᾋ',
+ 'ᾄ' => 'ᾌ',
+ 'ᾅ' => 'ᾍ',
+ 'ᾆ' => 'ᾎ',
+ 'ᾇ' => 'ᾏ',
+ 'ᾐ' => 'ᾘ',
+ 'ᾑ' => 'ᾙ',
+ 'ᾒ' => 'ᾚ',
+ 'ᾓ' => 'ᾛ',
+ 'ᾔ' => 'ᾜ',
+ 'ᾕ' => 'ᾝ',
+ 'ᾖ' => 'ᾞ',
+ 'ᾗ' => 'ᾟ',
+ 'ᾠ' => 'ᾨ',
+ 'ᾡ' => 'ᾩ',
+ 'ᾢ' => 'ᾪ',
+ 'ᾣ' => 'ᾫ',
+ 'ᾤ' => 'ᾬ',
+ 'ᾥ' => 'ᾭ',
+ 'ᾦ' => 'ᾮ',
+ 'ᾧ' => 'ᾯ',
+ 'ᾰ' => 'Ᾰ',
+ 'ᾱ' => 'Ᾱ',
+ 'ᾳ' => 'ᾼ',
+ 'ι' => 'Ι',
+ 'ῃ' => 'ῌ',
+ 'ῐ' => 'Ῐ',
+ 'ῑ' => 'Ῑ',
+ 'ῠ' => 'Ῠ',
+ 'ῡ' => 'Ῡ',
+ 'ῥ' => 'Ῥ',
+ 'ῳ' => 'ῼ',
+ 'ⅎ' => 'Ⅎ',
+ 'ⅰ' => 'Ⅰ',
+ 'ⅱ' => 'Ⅱ',
+ 'ⅲ' => 'Ⅲ',
+ 'ⅳ' => 'Ⅳ',
+ 'ⅴ' => 'Ⅴ',
+ 'ⅵ' => 'Ⅵ',
+ 'ⅶ' => 'Ⅶ',
+ 'ⅷ' => 'Ⅷ',
+ 'ⅸ' => 'Ⅸ',
+ 'ⅹ' => 'Ⅹ',
+ 'ⅺ' => 'Ⅺ',
+ 'ⅻ' => 'Ⅻ',
+ 'ⅼ' => 'Ⅼ',
+ 'ⅽ' => 'Ⅽ',
+ 'ⅾ' => 'Ⅾ',
+ 'ⅿ' => 'Ⅿ',
+ 'ↄ' => 'Ↄ',
+ 'ⓐ' => 'Ⓐ',
+ 'ⓑ' => 'Ⓑ',
+ 'ⓒ' => 'Ⓒ',
+ 'ⓓ' => 'Ⓓ',
+ 'ⓔ' => 'Ⓔ',
+ 'ⓕ' => 'Ⓕ',
+ 'ⓖ' => 'Ⓖ',
+ 'ⓗ' => 'Ⓗ',
+ 'ⓘ' => 'Ⓘ',
+ 'ⓙ' => 'Ⓙ',
+ 'ⓚ' => 'Ⓚ',
+ 'ⓛ' => 'Ⓛ',
+ 'ⓜ' => 'Ⓜ',
+ 'ⓝ' => 'Ⓝ',
+ 'ⓞ' => 'Ⓞ',
+ 'ⓟ' => 'Ⓟ',
+ 'ⓠ' => 'Ⓠ',
+ 'ⓡ' => 'Ⓡ',
+ 'ⓢ' => 'Ⓢ',
+ 'ⓣ' => 'Ⓣ',
+ 'ⓤ' => 'Ⓤ',
+ 'ⓥ' => 'Ⓥ',
+ 'ⓦ' => 'Ⓦ',
+ 'ⓧ' => 'Ⓧ',
+ 'ⓨ' => 'Ⓨ',
+ 'ⓩ' => 'Ⓩ',
+ 'ⰰ' => 'Ⰰ',
+ 'ⰱ' => 'Ⰱ',
+ 'ⰲ' => 'Ⰲ',
+ 'ⰳ' => 'Ⰳ',
+ 'ⰴ' => 'Ⰴ',
+ 'ⰵ' => 'Ⰵ',
+ 'ⰶ' => 'Ⰶ',
+ 'ⰷ' => 'Ⰷ',
+ 'ⰸ' => 'Ⰸ',
+ 'ⰹ' => 'Ⰹ',
+ 'ⰺ' => 'Ⰺ',
+ 'ⰻ' => 'Ⰻ',
+ 'ⰼ' => 'Ⰼ',
+ 'ⰽ' => 'Ⰽ',
+ 'ⰾ' => 'Ⰾ',
+ 'ⰿ' => 'Ⰿ',
+ 'ⱀ' => 'Ⱀ',
+ 'ⱁ' => 'Ⱁ',
+ 'ⱂ' => 'Ⱂ',
+ 'ⱃ' => 'Ⱃ',
+ 'ⱄ' => 'Ⱄ',
+ 'ⱅ' => 'Ⱅ',
+ 'ⱆ' => 'Ⱆ',
+ 'ⱇ' => 'Ⱇ',
+ 'ⱈ' => 'Ⱈ',
+ 'ⱉ' => 'Ⱉ',
+ 'ⱊ' => 'Ⱊ',
+ 'ⱋ' => 'Ⱋ',
+ 'ⱌ' => 'Ⱌ',
+ 'ⱍ' => 'Ⱍ',
+ 'ⱎ' => 'Ⱎ',
+ 'ⱏ' => 'Ⱏ',
+ 'ⱐ' => 'Ⱐ',
+ 'ⱑ' => 'Ⱑ',
+ 'ⱒ' => 'Ⱒ',
+ 'ⱓ' => 'Ⱓ',
+ 'ⱔ' => 'Ⱔ',
+ 'ⱕ' => 'Ⱕ',
+ 'ⱖ' => 'Ⱖ',
+ 'ⱗ' => 'Ⱗ',
+ 'ⱘ' => 'Ⱘ',
+ 'ⱙ' => 'Ⱙ',
+ 'ⱚ' => 'Ⱚ',
+ 'ⱛ' => 'Ⱛ',
+ 'ⱜ' => 'Ⱜ',
+ 'ⱝ' => 'Ⱝ',
+ 'ⱞ' => 'Ⱞ',
+ 'ⱡ' => 'Ⱡ',
+ 'ⱥ' => 'Ⱥ',
+ 'ⱦ' => 'Ⱦ',
+ 'ⱨ' => 'Ⱨ',
+ 'ⱪ' => 'Ⱪ',
+ 'ⱬ' => 'Ⱬ',
+ 'ⱳ' => 'Ⱳ',
+ 'ⱶ' => 'Ⱶ',
+ 'ⲁ' => 'Ⲁ',
+ 'ⲃ' => 'Ⲃ',
+ 'ⲅ' => 'Ⲅ',
+ 'ⲇ' => 'Ⲇ',
+ 'ⲉ' => 'Ⲉ',
+ 'ⲋ' => 'Ⲋ',
+ 'ⲍ' => 'Ⲍ',
+ 'ⲏ' => 'Ⲏ',
+ 'ⲑ' => 'Ⲑ',
+ 'ⲓ' => 'Ⲓ',
+ 'ⲕ' => 'Ⲕ',
+ 'ⲗ' => 'Ⲗ',
+ 'ⲙ' => 'Ⲙ',
+ 'ⲛ' => 'Ⲛ',
+ 'ⲝ' => 'Ⲝ',
+ 'ⲟ' => 'Ⲟ',
+ 'ⲡ' => 'Ⲡ',
+ 'ⲣ' => 'Ⲣ',
+ 'ⲥ' => 'Ⲥ',
+ 'ⲧ' => 'Ⲧ',
+ 'ⲩ' => 'Ⲩ',
+ 'ⲫ' => 'Ⲫ',
+ 'ⲭ' => 'Ⲭ',
+ 'ⲯ' => 'Ⲯ',
+ 'ⲱ' => 'Ⲱ',
+ 'ⲳ' => 'Ⲳ',
+ 'ⲵ' => 'Ⲵ',
+ 'ⲷ' => 'Ⲷ',
+ 'ⲹ' => 'Ⲹ',
+ 'ⲻ' => 'Ⲻ',
+ 'ⲽ' => 'Ⲽ',
+ 'ⲿ' => 'Ⲿ',
+ 'ⳁ' => 'Ⳁ',
+ 'ⳃ' => 'Ⳃ',
+ 'ⳅ' => 'Ⳅ',
+ 'ⳇ' => 'Ⳇ',
+ 'ⳉ' => 'Ⳉ',
+ 'ⳋ' => 'Ⳋ',
+ 'ⳍ' => 'Ⳍ',
+ 'ⳏ' => 'Ⳏ',
+ 'ⳑ' => 'Ⳑ',
+ 'ⳓ' => 'Ⳓ',
+ 'ⳕ' => 'Ⳕ',
+ 'ⳗ' => 'Ⳗ',
+ 'ⳙ' => 'Ⳙ',
+ 'ⳛ' => 'Ⳛ',
+ 'ⳝ' => 'Ⳝ',
+ 'ⳟ' => 'Ⳟ',
+ 'ⳡ' => 'Ⳡ',
+ 'ⳣ' => 'Ⳣ',
+ 'ⳬ' => 'Ⳬ',
+ 'ⳮ' => 'Ⳮ',
+ 'ⳳ' => 'Ⳳ',
+ 'ⴀ' => 'Ⴀ',
+ 'ⴁ' => 'Ⴁ',
+ 'ⴂ' => 'Ⴂ',
+ 'ⴃ' => 'Ⴃ',
+ 'ⴄ' => 'Ⴄ',
+ 'ⴅ' => 'Ⴅ',
+ 'ⴆ' => 'Ⴆ',
+ 'ⴇ' => 'Ⴇ',
+ 'ⴈ' => 'Ⴈ',
+ 'ⴉ' => 'Ⴉ',
+ 'ⴊ' => 'Ⴊ',
+ 'ⴋ' => 'Ⴋ',
+ 'ⴌ' => 'Ⴌ',
+ 'ⴍ' => 'Ⴍ',
+ 'ⴎ' => 'Ⴎ',
+ 'ⴏ' => 'Ⴏ',
+ 'ⴐ' => 'Ⴐ',
+ 'ⴑ' => 'Ⴑ',
+ 'ⴒ' => 'Ⴒ',
+ 'ⴓ' => 'Ⴓ',
+ 'ⴔ' => 'Ⴔ',
+ 'ⴕ' => 'Ⴕ',
+ 'ⴖ' => 'Ⴖ',
+ 'ⴗ' => 'Ⴗ',
+ 'ⴘ' => 'Ⴘ',
+ 'ⴙ' => 'Ⴙ',
+ 'ⴚ' => 'Ⴚ',
+ 'ⴛ' => 'Ⴛ',
+ 'ⴜ' => 'Ⴜ',
+ 'ⴝ' => 'Ⴝ',
+ 'ⴞ' => 'Ⴞ',
+ 'ⴟ' => 'Ⴟ',
+ 'ⴠ' => 'Ⴠ',
+ 'ⴡ' => 'Ⴡ',
+ 'ⴢ' => 'Ⴢ',
+ 'ⴣ' => 'Ⴣ',
+ 'ⴤ' => 'Ⴤ',
+ 'ⴥ' => 'Ⴥ',
+ 'ⴧ' => 'Ⴧ',
+ 'ⴭ' => 'Ⴭ',
+ 'ꙁ' => 'Ꙁ',
+ 'ꙃ' => 'Ꙃ',
+ 'ꙅ' => 'Ꙅ',
+ 'ꙇ' => 'Ꙇ',
+ 'ꙉ' => 'Ꙉ',
+ 'ꙋ' => 'Ꙋ',
+ 'ꙍ' => 'Ꙍ',
+ 'ꙏ' => 'Ꙏ',
+ 'ꙑ' => 'Ꙑ',
+ 'ꙓ' => 'Ꙓ',
+ 'ꙕ' => 'Ꙕ',
+ 'ꙗ' => 'Ꙗ',
+ 'ꙙ' => 'Ꙙ',
+ 'ꙛ' => 'Ꙛ',
+ 'ꙝ' => 'Ꙝ',
+ 'ꙟ' => 'Ꙟ',
+ 'ꙡ' => 'Ꙡ',
+ 'ꙣ' => 'Ꙣ',
+ 'ꙥ' => 'Ꙥ',
+ 'ꙧ' => 'Ꙧ',
+ 'ꙩ' => 'Ꙩ',
+ 'ꙫ' => 'Ꙫ',
+ 'ꙭ' => 'Ꙭ',
+ 'ꚁ' => 'Ꚁ',
+ 'ꚃ' => 'Ꚃ',
+ 'ꚅ' => 'Ꚅ',
+ 'ꚇ' => 'Ꚇ',
+ 'ꚉ' => 'Ꚉ',
+ 'ꚋ' => 'Ꚋ',
+ 'ꚍ' => 'Ꚍ',
+ 'ꚏ' => 'Ꚏ',
+ 'ꚑ' => 'Ꚑ',
+ 'ꚓ' => 'Ꚓ',
+ 'ꚕ' => 'Ꚕ',
+ 'ꚗ' => 'Ꚗ',
+ 'ꚙ' => 'Ꚙ',
+ 'ꚛ' => 'Ꚛ',
+ 'ꜣ' => 'Ꜣ',
+ 'ꜥ' => 'Ꜥ',
+ 'ꜧ' => 'Ꜧ',
+ 'ꜩ' => 'Ꜩ',
+ 'ꜫ' => 'Ꜫ',
+ 'ꜭ' => 'Ꜭ',
+ 'ꜯ' => 'Ꜯ',
+ 'ꜳ' => 'Ꜳ',
+ 'ꜵ' => 'Ꜵ',
+ 'ꜷ' => 'Ꜷ',
+ 'ꜹ' => 'Ꜹ',
+ 'ꜻ' => 'Ꜻ',
+ 'ꜽ' => 'Ꜽ',
+ 'ꜿ' => 'Ꜿ',
+ 'ꝁ' => 'Ꝁ',
+ 'ꝃ' => 'Ꝃ',
+ 'ꝅ' => 'Ꝅ',
+ 'ꝇ' => 'Ꝇ',
+ 'ꝉ' => 'Ꝉ',
+ 'ꝋ' => 'Ꝋ',
+ 'ꝍ' => 'Ꝍ',
+ 'ꝏ' => 'Ꝏ',
+ 'ꝑ' => 'Ꝑ',
+ 'ꝓ' => 'Ꝓ',
+ 'ꝕ' => 'Ꝕ',
+ 'ꝗ' => 'Ꝗ',
+ 'ꝙ' => 'Ꝙ',
+ 'ꝛ' => 'Ꝛ',
+ 'ꝝ' => 'Ꝝ',
+ 'ꝟ' => 'Ꝟ',
+ 'ꝡ' => 'Ꝡ',
+ 'ꝣ' => 'Ꝣ',
+ 'ꝥ' => 'Ꝥ',
+ 'ꝧ' => 'Ꝧ',
+ 'ꝩ' => 'Ꝩ',
+ 'ꝫ' => 'Ꝫ',
+ 'ꝭ' => 'Ꝭ',
+ 'ꝯ' => 'Ꝯ',
+ 'ꝺ' => 'Ꝺ',
+ 'ꝼ' => 'Ꝼ',
+ 'ꝿ' => 'Ꝿ',
+ 'ꞁ' => 'Ꞁ',
+ 'ꞃ' => 'Ꞃ',
+ 'ꞅ' => 'Ꞅ',
+ 'ꞇ' => 'Ꞇ',
+ 'ꞌ' => 'Ꞌ',
+ 'ꞑ' => 'Ꞑ',
+ 'ꞓ' => 'Ꞓ',
+ 'ꞗ' => 'Ꞗ',
+ 'ꞙ' => 'Ꞙ',
+ 'ꞛ' => 'Ꞛ',
+ 'ꞝ' => 'Ꞝ',
+ 'ꞟ' => 'Ꞟ',
+ 'ꞡ' => 'Ꞡ',
+ 'ꞣ' => 'Ꞣ',
+ 'ꞥ' => 'Ꞥ',
+ 'ꞧ' => 'Ꞧ',
+ 'ꞩ' => 'Ꞩ',
+ 'a' => 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'e' => 'E',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'm' => 'M',
+ 'n' => 'N',
+ 'o' => 'O',
+ 'p' => 'P',
+ 'q' => 'Q',
+ 'r' => 'R',
+ 's' => 'S',
+ 't' => 'T',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'w' => 'W',
+ 'x' => 'X',
+ 'y' => 'Y',
+ 'z' => 'Z',
+ '𐐨' => '𐐀',
+ '𐐩' => '𐐁',
+ '𐐪' => '𐐂',
+ '𐐫' => '𐐃',
+ '𐐬' => '𐐄',
+ '𐐭' => '𐐅',
+ '𐐮' => '𐐆',
+ '𐐯' => '𐐇',
+ '𐐰' => '𐐈',
+ '𐐱' => '𐐉',
+ '𐐲' => '𐐊',
+ '𐐳' => '𐐋',
+ '𐐴' => '𐐌',
+ '𐐵' => '𐐍',
+ '𐐶' => '𐐎',
+ '𐐷' => '𐐏',
+ '𐐸' => '𐐐',
+ '𐐹' => '𐐑',
+ '𐐺' => '𐐒',
+ '𐐻' => '𐐓',
+ '𐐼' => '𐐔',
+ '𐐽' => '𐐕',
+ '𐐾' => '𐐖',
+ '𐐿' => '𐐗',
+ '𐑀' => '𐐘',
+ '𐑁' => '𐐙',
+ '𐑂' => '𐐚',
+ '𐑃' => '𐐛',
+ '𐑄' => '𐐜',
+ '𐑅' => '𐐝',
+ '𐑆' => '𐐞',
+ '𐑇' => '𐐟',
+ '𐑈' => '𐐠',
+ '𐑉' => '𐐡',
+ '𐑊' => '𐐢',
+ '𐑋' => '𐐣',
+ '𐑌' => '𐐤',
+ '𐑍' => '𐐥',
+ '𐑎' => '𐐦',
+ '𐑏' => '𐐧',
+ '𑣀' => '𑢠',
+ '𑣁' => '𑢡',
+ '𑣂' => '𑢢',
+ '𑣃' => '𑢣',
+ '𑣄' => '𑢤',
+ '𑣅' => '𑢥',
+ '𑣆' => '𑢦',
+ '𑣇' => '𑢧',
+ '𑣈' => '𑢨',
+ '𑣉' => '𑢩',
+ '𑣊' => '𑢪',
+ '𑣋' => '𑢫',
+ '𑣌' => '𑢬',
+ '𑣍' => '𑢭',
+ '𑣎' => '𑢮',
+ '𑣏' => '𑢯',
+ '𑣐' => '𑢰',
+ '𑣑' => '𑢱',
+ '𑣒' => '𑢲',
+ '𑣓' => '𑢳',
+ '𑣔' => '𑢴',
+ '𑣕' => '𑢵',
+ '𑣖' => '𑢶',
+ '𑣗' => '𑢷',
+ '𑣘' => '𑢸',
+ '𑣙' => '𑢹',
+ '𑣚' => '𑢺',
+ '𑣛' => '𑢻',
+ '𑣜' => '𑢼',
+ '𑣝' => '𑢽',
+ '𑣞' => '𑢾',
+ '𑣟' => '𑢿',
+);
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 0000000..2fdcc5a
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,58 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (!function_exists('mb_strlen')) {
+ define('MB_CASE_UPPER', 0);
+ define('MB_CASE_LOWER', 1);
+ define('MB_CASE_TITLE', 2);
+
+ function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
+ function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
+ function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
+ function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
+ function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
+ function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
+ function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
+ function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
+ function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+ function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+ function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
+ function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
+ function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
+ function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
+ function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
+ function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
+ function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
+ function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
+ function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
+ function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
+ function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
+ function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
+ function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
+ function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
+ function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
+ function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
+ function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
+ function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+ function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
+ function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
+ function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
+ function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
+ function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
+ function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
+ function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
+ function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
+}
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 0000000..50ea12f
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/polyfill-mbstring",
+ "type": "library",
+ "description": "Symfony polyfill for the Mbstring extension",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-php72/LICENSE b/vendor/symfony/polyfill-php72/LICENSE
new file mode 100644
index 0000000..24fa32c
--- /dev/null
+++ b/vendor/symfony/polyfill-php72/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2018 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php
new file mode 100644
index 0000000..d531e84
--- /dev/null
+++ b/vendor/symfony/polyfill-php72/Php72.php
@@ -0,0 +1,216 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php72;
+
+/**
+ * @author Nicolas Grekas
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class Php72
+{
+ private static $hashMask;
+
+ public static function utf8_encode($s)
+ {
+ $s .= $s;
+ $len = \strlen($s);
+
+ for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
+ switch (true) {
+ case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
+ case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
+ default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
+ }
+ }
+
+ return substr($s, 0, $j);
+ }
+
+ public static function utf8_decode($s)
+ {
+ $s = (string) $s;
+ $len = \strlen($s);
+
+ for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
+ switch ($s[$i] & "\xF0") {
+ case "\xC0":
+ case "\xD0":
+ $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
+ $s[$j] = $c < 256 ? \chr($c) : '?';
+ break;
+
+ case "\xF0":
+ ++$i;
+ // no break
+
+ case "\xE0":
+ $s[$j] = '?';
+ $i += 2;
+ break;
+
+ default:
+ $s[$j] = $s[$i];
+ }
+ }
+
+ return substr($s, 0, $j);
+ }
+
+ public static function php_os_family()
+ {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ return 'Windows';
+ }
+
+ $map = array(
+ 'Darwin' => 'Darwin',
+ 'DragonFly' => 'BSD',
+ 'FreeBSD' => 'BSD',
+ 'NetBSD' => 'BSD',
+ 'OpenBSD' => 'BSD',
+ 'Linux' => 'Linux',
+ 'SunOS' => 'Solaris',
+ );
+
+ return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown';
+ }
+
+ public static function spl_object_id($object)
+ {
+ if (null === self::$hashMask) {
+ self::initHashMask();
+ }
+ if (null === $hash = spl_object_hash($object)) {
+ return;
+ }
+
+ return self::$hashMask ^ hexdec(substr($hash, 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+ }
+
+ public static function sapi_windows_vt100_support($stream, $enable = null)
+ {
+ if (!\is_resource($stream)) {
+ trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
+
+ return false;
+ }
+
+ $meta = stream_get_meta_data($stream);
+
+ if ('STDIO' !== $meta['stream_type']) {
+ trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING);
+
+ return false;
+ }
+
+ // We cannot actually disable vt100 support if it is set
+ if (false === $enable || !self::stream_isatty($stream)) {
+ return false;
+ }
+
+ // The native function does not apply to stdin
+ $meta = array_map('strtolower', $meta);
+ $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
+
+ return !$stdin
+ && (false !== getenv('ANSICON')
+ || 'ON' === getenv('ConEmuANSI')
+ || 'xterm' === getenv('TERM')
+ || 'Hyper' === getenv('TERM_PROGRAM'));
+ }
+
+ public static function stream_isatty($stream)
+ {
+ if (!\is_resource($stream)) {
+ trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
+
+ return false;
+ }
+
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $stat = @fstat($stream);
+ // Check if formatted mode is S_IFCHR
+ return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
+ }
+
+ return \function_exists('posix_isatty') && @posix_isatty($stream);
+ }
+
+ private static function initHashMask()
+ {
+ $obj = (object) array();
+ self::$hashMask = -1;
+
+ // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
+ $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
+ foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
+ if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
+ $frame['line'] = 0;
+ break;
+ }
+ }
+ if (!empty($frame['line'])) {
+ ob_start();
+ debug_zval_dump($obj);
+ self::$hashMask = (int) substr(ob_get_clean(), 17);
+ }
+
+ self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+ }
+
+ public static function mb_chr($code, $encoding = null)
+ {
+ if (0x80 > $code %= 0x200000) {
+ $s = \chr($code);
+ } elseif (0x800 > $code) {
+ $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
+ } elseif (0x10000 > $code) {
+ $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ } else {
+ $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ }
+
+ if ('UTF-8' !== $encoding) {
+ $s = mb_convert_encoding($s, $encoding, 'UTF-8');
+ }
+
+ return $s;
+ }
+
+ public static function mb_ord($s, $encoding = null)
+ {
+ if (null == $encoding) {
+ $s = mb_convert_encoding($s, 'UTF-8');
+ } elseif ('UTF-8' !== $encoding) {
+ $s = mb_convert_encoding($s, 'UTF-8', $encoding);
+ }
+
+ if (1 === \strlen($s)) {
+ return \ord($s);
+ }
+
+ $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
+ if (0xF0 <= $code) {
+ return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
+ }
+ if (0xE0 <= $code) {
+ return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
+ }
+ if (0xC0 <= $code) {
+ return (($code - 0xC0) << 6) + $s[2] - 0x80;
+ }
+
+ return $code;
+ }
+}
diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md
new file mode 100644
index 0000000..82c45f7
--- /dev/null
+++ b/vendor/symfony/polyfill-php72/README.md
@@ -0,0 +1,27 @@
+Symfony Polyfill / Php72
+========================
+
+This component provides functions added to PHP 7.2 core:
+
+- [`spl_object_id`](https://php.net/spl_object_id)
+- [`stream_isatty`](https://php.net/stream_isatty)
+
+On Windows only:
+
+- [`sapi_windows_vt100_support`](https://php.net/sapi_windows_vt100_support)
+
+Moved to core since 7.2 (was in the optional XML extension earlier):
+
+- [`utf8_encode`](https://php.net/utf8_encode)
+- [`utf8_decode`](https://php.net/utf8_decode)
+
+Also, it provides a constant added to PHP 7.2:
+- [`PHP_OS_FAMILY`](http://php.net/manual/en/reserved.constants.php#constant.php-os-family)
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php
new file mode 100644
index 0000000..519056d
--- /dev/null
+++ b/vendor/symfony/polyfill-php72/bootstrap.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php72 as p;
+
+if (PHP_VERSION_ID < 70200) {
+ if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
+ function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
+ }
+ if (!function_exists('stream_isatty')) {
+ function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
+ }
+ if (!function_exists('utf8_encode')) {
+ function utf8_encode($s) { return p\Php72::utf8_encode($s); }
+ function utf8_decode($s) { return p\Php72::utf8_decode($s); }
+ }
+ if (!function_exists('spl_object_id')) {
+ function spl_object_id($s) { return p\Php72::spl_object_id($s); }
+ }
+ if (!defined('PHP_OS_FAMILY')) {
+ define('PHP_OS_FAMILY', p\Php72::php_os_family());
+ }
+ if (!function_exists('mb_chr')) {
+ function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
+ function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
+ function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
+ }
+}
diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json
new file mode 100644
index 0000000..5d66ef7
--- /dev/null
+++ b/vendor/symfony/polyfill-php72/composer.json
@@ -0,0 +1,31 @@
+{
+ "name": "symfony/polyfill-php72",
+ "type": "library",
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Php72\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ }
+}