diff --git a/README.md b/README.md index 6b35be2..bd7f6e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,50 @@ -# epgphp +> Language: [English](README.md) [简体中文](README_zh-CN.md) + +> [!IMPORTANT] +> The documentation for this project is still under preparation and is not yet complete. + +[ +](https://www.gnu.org/licenses/gpl-2.0)     + + + +# Lightweight PHP EPG Service + +Welcome to the **Lightweight PHP EPG Service**! This project is a simple yet efficient Electronic Program Guide (EPG) service built with PHP. It is particularly suitable for EPG implementation in low-configuration servers, without Docker, and in scenarios requiring high concurrency. + +> I was deleted the original version of the file link, symlink function. Generated directly in the root directory, there is no need for an extra layer. Suitable for host panel (e.g. Kangle, Baota) that do not have the `symlink()` function open, awesome! + +## Features + +- **Lightweight**: Minimal resource usage, optimized for performance. +- **Easy Setup**: Just a few steps to get started. +- **Flexible**: Easily customizable to suit your needs. +- **Cache**: Support cache software such as Redis and Memcached. + +## Usage + +1. **Add your EPG data**: Customize the `manage.php` file with your TV schedule data. +2. **Query the service**: Send HTTP GET requests to fetch EPG information. +3. **Customize**: Modify the code as needed to fit your specific requirements. + +## Example + +Here’s a simple example of how to query the service: + +```php +http://localhost:8000/index.php?channel=BBC&date=2024-08-14 +http://localhost:8000/index.php?channel=BBC&date=20240814 +``` + +## Contributing + +Contributions are welcome! Feel free to submit issues, feature requests, or pull requests. + +## License + +Forked from: https://github.com/TakcC/PHP-EPG-Docker-Server + +This repository is my own modified version, which is more suitable for use in scenarios without Docker and requiring high concurrency. + +This project is licensed under the GPL-2.0 License. See the [LICENSE](LICENSE) file for more details. -PHP version of the EPG service, more lightweight. PHP版的EPG服务,更轻量。 \ No newline at end of file diff --git a/README_zh-CN.md b/README_zh-CN.md new file mode 100644 index 0000000..368ea47 --- /dev/null +++ b/README_zh-CN.md @@ -0,0 +1,54 @@ +> Language: [English](README.md) [简体中文](README_zh-CN.md) + +> [!IMPORTANT] +> 本项目没有任何文档参考,目前正在编写中。 + +[ +](https://www.gnu.org/licenses/gpl-2.0)     + + + +# 轻量级 PHP 版 EPG 服务 + +欢迎使用 **轻量级 PHP 版 EPG 服务**!这是一个简单而高效的电子节目指南(EPG)服务,使用 PHP 构建。它设计得非常轻量级,易于使用,特别适合低配置服务器、没有Docker和需要高并发场景的 EPG 实现。 + +删除了原版本的文件链接,symlink函数。直接在根目录生成,完全没必要又多一层。适合没有开放`symlink()`函数的虚拟主机,有福了! + +## 写在前面 + +遇到问题,理性反馈,不要做伸手党 + +## 功能特色 + +- **轻量级**:资源占用极少,性能优化良好。 +- **简单安装**:几步即可开始使用。 +- **灵活**:可以轻松自定义以满足您的需求。 +- **带缓存队列支持**:无需一直请求MySQL等数据库,缓存高效。 + +## 使用说明 + +1. **添加您的 EPG 数据**:自定义 `manage.php` 文件,添加您的电视节目表数据。 +2. **查询服务**:发送 HTTP GET 请求来获取 EPG 信息。 +3. **自定义**:根据具体需求修改代码。 + +## 示例 + +以下是一个简单的查询示例: + +```php +http://localhost:8000/index.php?channel=BBC&date=2024-08-14 +http://localhost:8000/index.php?channel=BBC&date=20240814 +``` + +## 贡献 + +欢迎贡献代码!您可以提交问题、功能请求或拉取请求。 + +## 许可证 + +Fork 自:https://github.com/TakcC/PHP-EPG-Docker-Server + +本仓库为衍生/二次开发版,更适合面板、虚拟主机、服务器、稳定性优先的用户部署。 + +本项目采用 GPL-2.0 许可证。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 + diff --git a/assets/CHANGELOG.md b/assets/CHANGELOG.md new file mode 100644 index 0000000..b94a2c0 --- /dev/null +++ b/assets/CHANGELOG.md @@ -0,0 +1,33 @@ +## V4.0 + +1. 舍弃`symlink()`函数,直接在根目录生成`XMLTV`文件。 + +2. 添加Python脚本,使其自动Cron,适合没有权限执行cron.php的人。 + +3. 修复`manage.html`字符溢出。 + +4. 更新语法。 + +Summary: 总体来说,更适合虚拟主机、面板用户,可以托管至仅能使用PHP的网站。 + +## V3.1 + +1. 加入Nginx、Caddy服务器的配置文件示例,更新了一些地方。 + +## V3.0 + +1. 引入Font Awesome. + +2. 还是加上了phpliteadmin. 正在优化 + +## V2.0 + +1. 修改UI,删去phpliteadmin、tinyfilemanager高危目录. + +## V1.0 + +1. Original work: https://github.com/TakcC/PHP-EPG-Docker-Server + +This repository is my own modified version, which is more suitable for use in scenarios without Docker and requiring high concurrency. + +This project is licensed under the GPL-2.0 License. See the LICENSE file for more details. \ No newline at end of file diff --git a/assets/Parsedown.php b/assets/Parsedown.php new file mode 100644 index 0000000..38edfe9 --- /dev/null +++ b/assets/Parsedown.php @@ -0,0 +1,1994 @@ +textElements($text); + + # convert to markup + $markup = $this->elements($Elements); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + protected function textElements($text) + { + # make sure no definitions are set + $this->DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + return $this->linesElements($lines); + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + function setSafeMode($safeMode) + { + $this->safeMode = (bool) $safeMode; + + return $this; + } + + protected $safeMode; + + function setStrictMode($strictMode) + { + $this->strictMode = (bool) $strictMode; + + return $this; + } + + protected $strictMode; + + protected $safeLinksWhitelist = array( + 'http://', + 'https://', + 'ftp://', + 'ftps://', + 'mailto:', + 'tel:', + 'data:image/png;base64,', + 'data:image/gif;base64,', + 'data:image/jpeg;base64,', + 'irc:', + 'ircs:', + 'git:', + 'ssh:', + 'news:', + 'steam:', + ); + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + return $this->elements($this->linesElements($lines)); + } + + protected function linesElements(array $lines) + { + $Elements = array(); + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = (isset($CurrentBlock['interrupted']) + ? $CurrentBlock['interrupted'] + 1 : 1 + ); + } + + continue; + } + + while (($beforeTab = strstr($line, "\t", true)) !== false) + { + $shortage = 4 - mb_strlen($beforeTab, 'utf-8') % 4; + + $line = $beforeTab + . str_repeat(' ', $shortage) + . substr($line, strlen($beforeTab) + 1) + ; + } + + $indent = strspn($line, ' '); + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Continue'; + $Block = $this->$methodName($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{"block$blockType"}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and $CurrentBlock['type'] === 'Paragraph') + { + $Block = $this->paragraphContinue($Line, $CurrentBlock); + } + + if (isset($Block)) + { + $CurrentBlock = $Block; + } + else + { + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); + } + + # ~ + + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + # ~ + + return $Elements; + } + + protected function extractElement(array $Component) + { + if ( ! isset($Component['element'])) + { + if (isset($Component['markup'])) + { + $Component['element'] = array('rawHtml' => $Component['markup']); + } + elseif (isset($Component['hidden'])) + { + $Component['element'] = array(); + } + } + + return $Component['element']; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block' . $Type . 'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block' . $Type . 'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and $Block['type'] === 'Paragraph' and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); + + unset($Block['interrupted']); + } + + $Block['element']['element']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['element']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (strpos($Line['text'], '') !== false) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['element']['rawHtml'] .= "\n" . $Line['body']; + + if (strpos($Line['text'], '-->') !== false) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + $marker = $Line['text'][0]; + + $openerLength = strspn($Line['text'], $marker); + + if ($openerLength < 3) + { + return; + } + + $infostring = trim(substr($Line['text'], $openerLength), "\t "); + + if (strpos($infostring, '`') !== false) + { + return; + } + + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if ($infostring !== '') + { + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($infostring, 0, strcspn($infostring, " \t\n\f\r")); + + $Element['attributes'] = array('class' => "language-$language"); + } + + $Block = array( + 'char' => $marker, + 'openerLength' => $openerLength, + 'element' => array( + 'name' => 'pre', + 'element' => $Element, + ), + ); + + return $Block; + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); + + unset($Block['interrupted']); + } + + if (($len = strspn($Line['text'], $Block['char'])) >= $Block['openerLength'] + and chop(substr($Line['text'], $len), ' ') === '' + ) { + $Block['element']['element']['text'] = substr($Block['element']['element']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['element']['text'] .= "\n" . $Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + $level = strspn($Line['text'], '#'); + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '#'); + + if ($this->strictMode and isset($text[0]) and $text[0] !== ' ') + { + return; + } + + $text = trim($text, ' '); + + $Block = array( + 'element' => array( + 'name' => 'h' . $level, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $text, + 'destination' => 'elements', + ) + ), + ); + + return $Block; + } + + # + # List + + protected function blockList($Line, ?array $CurrentBlock = null) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\)]'); + + if (preg_match('/^('.$pattern.'([ ]++|$))(.*+)/', $Line['text'], $matches)) + { + $contentIndent = strlen($matches[2]); + + if ($contentIndent >= 5) + { + $contentIndent -= 1; + $matches[1] = substr($matches[1], 0, -$contentIndent); + $matches[3] = str_repeat(' ', $contentIndent) . $matches[3]; + } + elseif ($contentIndent === 0) + { + $matches[1] .= ' '; + } + + $markerWithoutWhitespace = strstr($matches[1], ' ', true); + + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'data' => array( + 'type' => $name, + 'marker' => $matches[1], + 'markerType' => ($name === 'ul' ? $markerWithoutWhitespace : substr($markerWithoutWhitespace, -1)), + ), + 'element' => array( + 'name' => $name, + 'elements' => array(), + ), + ); + $Block['data']['markerTypeRegex'] = preg_quote($Block['data']['markerType'], '/'); + + if ($name === 'ol') + { + $listStart = ltrim(strstr($matches[1], $Block['data']['markerType'], true), '0') ?: '0'; + + if ($listStart !== '1') + { + if ( + isset($CurrentBlock) + and $CurrentBlock['type'] === 'Paragraph' + and ! isset($CurrentBlock['interrupted']) + ) { + return; + } + + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => array( + 'function' => 'li', + 'argument' => !empty($matches[3]) ? array($matches[3]) : array(), + 'destination' => 'elements' + ) + ); + + $Block['element']['elements'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if (isset($Block['interrupted']) and empty($Block['li']['handler']['argument'])) + { + return null; + } + + $requiredIndent = ($Block['indent'] + strlen($Block['data']['marker'])); + + if ($Line['indent'] < $requiredIndent + and ( + ( + $Block['data']['type'] === 'ol' + and preg_match('/^[0-9]++'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) or ( + $Block['data']['type'] === 'ul' + and preg_match('/^'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) + ) + ) { + if (isset($Block['interrupted'])) + { + $Block['li']['handler']['argument'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['indent'] = $Line['indent']; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => array( + 'function' => 'li', + 'argument' => array($text), + 'destination' => 'elements' + ) + ); + + $Block['element']['elements'] []= & $Block['li']; + + return $Block; + } + elseif ($Line['indent'] < $requiredIndent and $this->blockList($Line)) + { + return null; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ($Line['indent'] >= $requiredIndent) + { + if (isset($Block['interrupted'])) + { + $Block['li']['handler']['argument'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + $text = substr($Line['body'], $requiredIndent); + + $Block['li']['handler']['argument'] []= $text; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,'.$requiredIndent.'}+/', '', $Line['body']); + + $Block['li']['handler']['argument'] []= $text; + + return $Block; + } + } + + protected function blockListComplete(array $Block) + { + if (isset($Block['loose'])) + { + foreach ($Block['element']['elements'] as &$li) + { + if (end($li['handler']['argument']) !== '') + { + $li['handler']['argument'] []= ''; + } + } + } + + return $Block; + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => array( + 'function' => 'linesElements', + 'argument' => (array) $matches[1], + 'destination' => 'elements', + ) + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) + { + $Block['element']['handler']['argument'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['handler']['argument'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + $marker = $Line['text'][0]; + + if (substr_count($Line['text'], $marker) >= 3 and chop($Line['text'], " $marker") === '') + { + $Block = array( + 'element' => array( + 'name' => 'hr', + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, ?array $Block = null) + { + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] < 4 and chop(chop($Line['text'], ' '), $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (preg_match('/^<[\/]?+(\w*)(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'element' => array( + 'rawHtml' => $Line['text'], + 'autobreak' => true, + ), + ); + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed']) or isset($Block['interrupted'])) + { + return; + } + + $Block['element']['rawHtml'] .= "\n" . $Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (strpos($Line['text'], ']') !== false + and preg_match('/^\[(.+?)\]:[ ]*+(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*+$/', $Line['text'], $matches) + ) { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => isset($matches[3]) ? $matches[3] : null, + ); + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'element' => array(), + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, ?array $Block = null) + { + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) + { + return; + } + + if ( + strpos($Block['element']['handler']['argument'], '|') === false + and strpos($Line['text'], '|') === false + and strpos($Line['text'], ':') === false + or strpos($Block['element']['handler']['argument'], "\n") !== false + ) { + return; + } + + if (chop($Line['text'], ' -:|') !== '') + { + return; + } + + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + return; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['handler']['argument']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + if (count($headerCells) !== count($alignments)) + { + return; + } + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $headerCell, + 'destination' => 'elements', + ) + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => "text-align: $alignment;", + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'elements' => array(), + ), + ); + + $Block['element']['elements'] []= array( + 'name' => 'thead', + ); + + $Block['element']['elements'] []= array( + 'name' => 'tbody', + 'elements' => array(), + ); + + $Block['element']['elements'][0]['elements'] []= array( + 'name' => 'tr', + 'elements' => $HeaderElements, + ); + + return $Block; + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if (count($Block['alignments']) === 1 or $Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]++`|`)++/', $row, $matches); + + $cells = array_slice($matches[0], 0, count($Block['alignments'])); + + foreach ($cells as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $cell, + 'destination' => 'elements', + ) + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: ' . $Block['alignments'][$index] . ';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'elements' => $Elements, + ); + + $Block['element']['elements'][1]['elements'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + return array( + 'type' => 'Paragraph', + 'element' => array( + 'name' => 'p', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $Line['text'], + 'destination' => 'elements', + ), + ), + ); + } + + protected function paragraphContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + $Block['element']['handler']['argument'] .= "\n".$Line['text']; + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!*_&[:<`~\\'; + + # + # ~ + # + + public function line($text, $nonNestables = array()) + { + return $this->elements($this->lineElements($text, $nonNestables)); + } + + protected function lineElements($text, $nonNestables = array()) + { + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + $Elements = array(); + + $nonNestables = (empty($nonNestables) + ? array() + : array_combine($nonNestables, $nonNestables) + ); + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strlen($text) - strlen($excerpt); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + # check to see if the current inline type is nestable in the current context + + if (isset($nonNestables[$inlineType])) + { + continue; + } + + $Inline = $this->{"inline$inlineType"}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # cause the new element to 'inherit' our non nestables + + + $Inline['element']['nonNestables'] = isset($Inline['element']['nonNestables']) + ? array_merge($Inline['element']['nonNestables'], $nonNestables) + : $nonNestables + ; + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; + + # compile the inline + $Elements[] = $this->extractElement($Inline); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; + + $text = substr($text, $markerPosition + 1); + } + + $InlineText = $this->inlineText($text); + $Elements[] = $InlineText['element']; + + foreach ($Elements as &$Element) + { + if ( ! isset($Element['autobreak'])) + { + $Element['autobreak'] = false; + } + } + + return $Elements; + } + + # + # ~ + # + + protected function inlineText($text) + { + $Inline = array( + 'extent' => strlen($text), + 'element' => array(), + ); + + $Inline['element']['elements'] = self::pregReplaceElements( + $this->breaksEnabled ? '/[ ]*+\n/' : '/(?:[ ]*+\\\\|[ ]{2,}+)\n/', + array( + array('name' => 'br'), + array('text' => "\n"), + ), + $text + ); + + return $Inline; + } + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^(['.$marker.']++)[ ]*+(.+?)[ ]*+(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + $hostnameLabel = '[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?'; + + $commonMarkEmail = '[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]++@' + . $hostnameLabel . '(?:\.' . $hostnameLabel . ')*'; + + if (strpos($Excerpt['text'], '>') !== false + and preg_match("/^<((mailto:)?$commonMarkEmail)>/i", $Excerpt['text'], $matches) + ){ + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = "mailto:$url"; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'element' => array('rawHtml' => $Excerpt['text'][1]), + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['handler']['argument'], + ), + 'autobreak' => true, + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => null, + 'destination' => 'elements', + ), + 'nonNestables' => array('Url', 'Link'), + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['handler']['argument'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*+"|\'[^\']*+\'))?\s*+[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['handler']['argument']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['handler']['argument']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*+[ ]*+>/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*+(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if (substr($Excerpt['text'], 1, 1) !== ' ' and strpos($Excerpt['text'], ';') !== false + and preg_match('/^&(#?+[0-9a-zA-Z]++);/', $Excerpt['text'], $matches) + ) { + return array( + 'element' => array('rawHtml' => '&' . $matches[1] . ';'), + 'extent' => strlen($matches[0]), + ); + } + + return; + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (strpos($Excerpt['context'], 'http') !== false + and preg_match('/\bhttps?+:[\/]{2}[^\s<]+\b\/*+/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE) + ) { + $url = $matches[0][0]; + + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w++:\/{2}[^ >]++)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + $Inline = $this->inlineText($text); + return $this->element($Inline['element']); + } + + # + # Handlers + # + + protected function handle(array $Element) + { + if (isset($Element['handler'])) + { + if (!isset($Element['nonNestables'])) + { + $Element['nonNestables'] = array(); + } + + if (is_string($Element['handler'])) + { + $function = $Element['handler']; + $argument = $Element['text']; + unset($Element['text']); + $destination = 'rawHtml'; + } + else + { + $function = $Element['handler']['function']; + $argument = $Element['handler']['argument']; + $destination = $Element['handler']['destination']; + } + + $Element[$destination] = $this->{$function}($argument, $Element['nonNestables']); + + if ($destination === 'handler') + { + $Element = $this->handle($Element); + } + + unset($Element['handler']); + } + + return $Element; + } + + protected function handleElementRecursive(array $Element) + { + return $this->elementApplyRecursive(array($this, 'handle'), $Element); + } + + protected function handleElementsRecursive(array $Elements) + { + return $this->elementsApplyRecursive(array($this, 'handle'), $Elements); + } + + protected function elementApplyRecursive($closure, array $Element) + { + $Element = call_user_func($closure, $Element); + + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursive($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementApplyRecursive($closure, $Element['element']); + } + + return $Element; + } + + protected function elementApplyRecursiveDepthFirst($closure, array $Element) + { + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['element']); + } + + $Element = call_user_func($closure, $Element); + + return $Element; + } + + protected function elementsApplyRecursive($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursive($closure, $Element); + } + + return $Elements; + } + + protected function elementsApplyRecursiveDepthFirst($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursiveDepthFirst($closure, $Element); + } + + return $Elements; + } + + protected function element(array $Element) + { + if ($this->safeMode) + { + $Element = $this->sanitiseElement($Element); + } + + # identity map if element has no handler + $Element = $this->handle($Element); + + $hasName = isset($Element['name']); + + $markup = ''; + + if ($hasName) + { + $markup .= '<' . $Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= " $name=\"".self::escape($value).'"'; + } + } + } + + $permitRawHtml = false; + + if (isset($Element['text'])) + { + $text = $Element['text']; + } + // very strongly consider an alternative if you're writing an + // extension + elseif (isset($Element['rawHtml'])) + { + $text = $Element['rawHtml']; + + $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode']; + $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode; + } + + $hasContent = isset($text) || isset($Element['element']) || isset($Element['elements']); + + if ($hasContent) + { + $markup .= $hasName ? '>' : ''; + + if (isset($Element['elements'])) + { + $markup .= $this->elements($Element['elements']); + } + elseif (isset($Element['element'])) + { + $markup .= $this->element($Element['element']); + } + else + { + if (!$permitRawHtml) + { + $markup .= self::escape($text, true); + } + else + { + $markup .= $text; + } + } + + $markup .= $hasName ? '' . $Element['name'] . '>' : ''; + } + elseif ($hasName) + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + $autoBreak = true; + + foreach ($Elements as $Element) + { + if (empty($Element)) + { + continue; + } + + $autoBreakNext = (isset($Element['autobreak']) + ? $Element['autobreak'] : isset($Element['name']) + ); + // (autobreak === false) covers both sides of an element + $autoBreak = !$autoBreak ? $autoBreak : $autoBreakNext; + + $markup .= ($autoBreak ? "\n" : '') . $this->element($Element); + $autoBreak = $autoBreakNext; + } + + $markup .= $autoBreak ? "\n" : ''; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $Elements = $this->linesElements($lines); + + if ( ! in_array('', $lines) + and isset($Elements[0]) and isset($Elements[0]['name']) + and $Elements[0]['name'] === 'p' + ) { + unset($Elements[0]['name']); + } + + return $Elements; + } + + # + # AST Convenience + # + + /** + * Replace occurrences $regexp with $Elements in $text. Return an array of + * elements representing the replacement. + */ + protected static function pregReplaceElements($regexp, $Elements, $text) + { + $newElements = array(); + + while (preg_match($regexp, $text, $matches, PREG_OFFSET_CAPTURE)) + { + $offset = $matches[0][1]; + $before = substr($text, 0, $offset); + $after = substr($text, $offset + strlen($matches[0][0])); + + $newElements[] = array('text' => $before); + + foreach ($Elements as $Element) + { + $newElements[] = $Element; + } + + $text = $after; + } + + $newElements[] = array('text' => $text); + + return $newElements; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + protected function sanitiseElement(array $Element) + { + static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/'; + static $safeUrlNameToAtt = array( + 'a' => 'href', + 'img' => 'src', + ); + + if ( ! isset($Element['name'])) + { + unset($Element['attributes']); + return $Element; + } + + if (isset($safeUrlNameToAtt[$Element['name']])) + { + $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]); + } + + if ( ! empty($Element['attributes'])) + { + foreach ($Element['attributes'] as $att => $val) + { + # filter out badly parsed attribute + if ( ! preg_match($goodAttribute, $att)) + { + unset($Element['attributes'][$att]); + } + # dump onevent attribute + elseif (self::striAtStart($att, 'on')) + { + unset($Element['attributes'][$att]); + } + } + } + + return $Element; + } + + protected function filterUnsafeUrlInAttribute(array $Element, $attribute) + { + foreach ($this->safeLinksWhitelist as $scheme) + { + if (self::striAtStart($Element['attributes'][$attribute], $scheme)) + { + return $Element; + } + } + + $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]); + + return $Element; + } + + # + # Static Methods + # + + protected static function escape($text, $allowQuotes = false) + { + return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8'); + } + + protected static function striAtStart($string, $needle) + { + $len = strlen($needle); + + if ($len > strlen($string)) + { + return false; + } + else + { + return strtolower(substr($string, 0, $len)) === strtolower($needle); + } + } + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', '~' + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*+[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*+_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*+(?:\s*+=\s*+(?:[^"\'=<>`\s]+|"[^"]*+"|\'[^\']*+\'))?+'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/assets/css/login.css b/assets/css/login.css new file mode 100644 index 0000000..2756c35 --- /dev/null +++ b/assets/css/login.css @@ -0,0 +1,194 @@ +@import url('https://gfonts.aby.pub/css?family=Raleway:400,700'); + +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: Raleway, sans-serif; +} + +body { + background: linear-gradient(90deg, #C7C5F4, #776BCC); + height: 100vh; + overflow: hidden; +} + +.container { + display: flex; + align-items: center; + justify-content: center; + height: 100vh; +} + +.screen { + background: linear-gradient(90deg, #5D54A4, #7C78B8); + position: relative; + height: 600px; + width: 360px; + box-shadow: 0px 0px 24px #5C5696; +} + +.screen__content { + z-index: 1; + position: relative; + height: 100%; +} + +.screen__background { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 0; + -webkit-clip-path: inset(0 0 0 0); + clip-path: inset(0 0 0 0); +} + +.screen__background__shape { + transform: rotate(45deg); + position: absolute; +} + +.screen__background__shape1 { + height: 520px; + width: 520px; + background: #FFF; + top: -50px; + right: 120px; + border-radius: 0 72px 0 0; +} + +.screen__background__shape2 { + height: 220px; + width: 220px; + background: #6C63AC; + top: -172px; + right: 0; + border-radius: 32px; +} + +.screen__background__shape3 { + height: 540px; + width: 190px; + background: linear-gradient(270deg, #5D54A4, #6A679E); + top: -24px; + right: 0; + border-radius: 32px; +} + +.screen__background__shape4 { + height: 400px; + width: 200px; + background: #7E7BB9; + top: 420px; + right: 50px; + border-radius: 60px; +} + +.login { + width: 320px; + padding: 30px; + padding-top: 156px; +} + +.login__field { + padding: 20px 0px; + position: relative; +} + +.login__icon { + position: absolute; + top: 30px; + color: #7875B5; +} + +.login__input { + border: none; + border-bottom: 2px solid #D1D1D4; + background: none; + padding: 10px; + padding-left: 24px; + font-weight: 700; + width: 75%; + transition: .2s; +} + +.login__input:active, +.login__input:focus, +login__input:hover { + outline: none; + border-bottom-color: #6A679E; +} + +.login__submit { + background: #fff; + font-size: 14px; + margin-top: 30px; + padding: 16px 20px; + border-radius: 26px; + border: 1px solid #D4D3E8; + text-transform: uppercase; + font-weight: 700; + display: flex; + align-items: center; + width: 100%; + color: #4C489D; + box-shadow: 0px 2px 2px #5C5696; + cursor: pointer; + transition: .2s; +} + +.login__submit:active, +login__submit:focus, +login__submit:hover { + border-color: #6A679E; + outline: none; +} + +input[type="submit"], +.button__icon { + font-size: 24px; + margin-left: auto; + color: #7875B5; +} + +.footer { + color: #ffffff; + position: fixed; + bottom: 10px; + width: 100%; + text-align: center; + text-decoration: none; +} + +@media (max-width: 768px) { + .screen { + width: 100%; + height: 100%; + box-shadow: none; + } + + .screen__background__shape1, + .screen__background__shape2, + .screen__background__shape3, + .screen__background__shape4 { + display: none; + } + + .login { + width: 100%; + padding: 20px; + padding-top: 100px; + } + + .login__input { + width: 100%; + } +} + +@media (max-height: 600px) { + .login { + padding-top: 50px; + } +} \ No newline at end of file diff --git a/assets/css/manage.css b/assets/css/manage.css new file mode 100644 index 0000000..851d1ae --- /dev/null +++ b/assets/css/manage.css @@ -0,0 +1,672 @@ +@import url('https://gfonts.aby.pub/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=LXGW+WenKai+Mono+TC&display=swap'); + +body { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + margin: 0; + font-family: Tahoma, sans-serif; + background-color: #f0f0f0; +} + +body.theme-transition { + transition: background-color 0.5s ease, color 0.5s ease; +} + +.container { + background: white; + padding: 30px; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.2); + border-radius: 5px; + width: 900px; + margin: auto; +} + +textarea { + width: 100%; + padding: 5px; + line-height: 1.5; + font-size: 15px; + border: 1px solid #ccc; + border-radius: 5px; + box-sizing: border-box; + resize: none; + font-family: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif; + white-space: pre-wrap; + /* 保持空白字符和换行符,同时在内容超出容器宽度时换行 */ + word-break: break-all; + /* 允许单词内断行 */ +} + +textarea:disabled { + opacity: 0.8; +} + +textarea[id="gen_list_text"] { + height: 140px; +} + +.form-row { + display: flex; + align-items: center; + margin-bottom: 10px; +} + +.label-days-to-keep { + width: 98px; +} + +.custom-margin1 { + margin-left: 189px; +} + +.custom-margin2, +.custom-margin3 { + margin-left: 70px; +} + +.form-row select, +.modal-content select, +input[type="time"] { + font-family: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif; + font-size: 15px; + border: 1px solid #ccc; + border-radius: 5px; + box-sizing: border-box; + width: 98px; + height: 32px; + margin-right: 12px; + text-align: center; +} + +input[type="time"] { + width: 90px; + margin-right: 0px; +} + +.form-row input[id="start_time"] { + margin-left: 292px; +} + +.form-row input[id="end_time"], +select[id="interval_hour"] { + margin-left: 44px; +} + +.form-row select[id="interval_hour"], +select[id="interval_minute"] { + width: 70px; + margin-right: 0px; +} + +a, +.blue-span { + color: blue; + cursor: pointer; + text-decoration: none; +} + +a:hover, +.blue-span:hover { + color: #0056b3; +} + +.button-container { + display: flex; + gap: 15px; + margin: 0 auto; + align-items: center; + text-align: center; + justify-content: space-between; +} + +.button-container a, +.button-container button, +.modal-content button, +input[type="submit"] { + padding: 10px; + background-color: #2196F3; + color: white; + border: none; + border-radius: 10px; + text-align: center; + cursor: pointer; + box-sizing: border-box; + align-items: center; + width: 100%; + font-size: 16px; + font-weight: bold; +} + +.button-container a:hover, +.button-container button:hover, +.modal-content button:hover, +input[type="submit"]:hover { + background-color: #0b7dda; +} + +input[type="submit"], +.button-container button[name="logoutbtn"], +.modal-content button { + background-color: #FF9800; + border-radius: 5px; +} + +input[type="submit"]:hover, +.button-container button[name="logoutbtn"]:hover, +.modal-content button:hover { + background-color: #e68900; +} + +button[id="deleteUnusedIcons"], +button[id="uploadAllIcons"], +button[id="showAllIcons"] { + display: flex; + height: 36px; +} + +.button-container button[name="logoutbtn"] { + border-radius: 10px; + width: 300px; +} + +input[type="text"] { + width: calc(100% - 22px); + padding: 10px; + margin-bottom: 10px; + border: 1px solid #ccc; + border-radius: 5px; +} + +.flex-container { + display: flex; + justify-content: space-between; + gap: 20px; +} + +.flex-item { + width: 48%; +} + +.modal { + display: none; + /* 默认隐藏 */ + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgba(0, 0, 0, 0.4); + text-align: center; +} + +.modal-content { + background-color: #fefefe; + display: inline-block; + padding: 20px; + border: 1px solid #888; + text-align: left; + border-radius: 10px; + position: relative; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); + top: 50%; + transform: translateY(-50%); + width: 660px; + height: 530px; +} + +.version-update-modal-content, +.help-modal-content { + padding-left: 25px; +} + +.cron-log-modal-content { + width: 400px; +} + +.update-log-modal-content { + width: 880px; +} + +.live-source-modal-content { + width: 880px; + height: 630px; +} + +.message-modal-content { + min-width: 150px; + width: auto; + height: auto; + line-height: 1.6; +} + +.icon-modal-content { + width: 700px; +} + +.close { + color: #aaa; + float: right; + font-size: 28px; + font-weight: bold; +} + +.close:hover, +.close:focus { + color: black; + cursor: pointer; +} + +.table-container { + height: 460px; + /* 固定高度 */ + overflow-y: scroll; + /* 启用垂直滚动条 */ + border: 1px solid #ccc; + border-radius: 5px; + font-size: 15px; +} + +.table-container[id="channel-table-container"], +.table-container[id="icon-table-container"] { + height: 352px; +} + +.table-container[id="channel-bind-epg-table-container"] { + height: 399px; +} + +.table-container[id="channel-match-table-container"] { + height: 460px; +} + +.table-container[id="live-source-table-container"] { + height: 410px; +} + +#logTable, +#channelMatchTable, +#channelTable, +#iconTable, +#channelBindEPGTable, +#liveSourceTable { + width: 100%; + border-collapse: separate; + border-spacing: 0 0px; + /* 调整行之间的垂直间距 */ + table-layout: fixed; + /* 固定表格布局,防止内容超出 */ +} + +#logTable, +#liveSourceTable { + border-spacing: 0 5px; + /* 调整行之间的垂直间距 */ +} + +#logTable th, +#logTable td, +#channelTable th, +#channelTable td, +#iconTable th, +#iconTable td, +#channelBindEPGTable th, +#channelBindEPGTable td, +#channelMatchTable th, +#channelMatchTable td, +#liveSourceTable th, +#liveSourceTable td { + border: 1px solid #ccc; + padding: 5px; + word-break: break-all; + /* 允许单词内断行 */ +} + +#channelTable th, +#channelTable td, +#iconTable th, +#iconTable td, +#channelMatchTable th, +#channelMatchTable td, +#channelBindEPGTable th, +#liveSourceTable th, +#liveSourceTable td { + text-align: center; +} + +#logTable th:nth-child(1), +#logTable td:nth-child(1) { + width: 10%; + /* 第一列宽度 */ + text-align: center; +} + +#logTable th:nth-child(2) { + text-align: center; + /* 第二列表头居中 */ +} + +#channelTable th:nth-child(1), +#channelTable td:nth-child(1) { + width: 30%; + /* 第一列宽度 */ +} + +#iconTable th:nth-child(1), +#iconTable td:nth-child(1) { + width: 17%; + /* 第一列宽度 */ +} + +#iconTable th:nth-child(2), +#iconTable td:nth-child(2) { + width: 55%; + /* 第二列宽度 */ +} + +#iconTable th:nth-child(3), +#iconTable td:nth-child(3) { + width: 13%; + /* 第三列宽度 */ +} + +#channelMatchTable th:nth-child(4), +#channelMatchTable td:nth-child(4) { + width: 15%; + /* 第四列宽度 */ +} + +.row { + display: flex; + flex-wrap: nowrap; + /* 禁止换行 */ + gap: 45px; + margin-bottom: 12px; +} + +.column { + display: flex; + align-items: center; + flex: 1; + /* 每个列占据同等宽度 */ +} + +.row label { + white-space: nowrap; + /* 确保label不会换行 */ + margin-right: 0px; +} + +.row select, +.row textarea { + width: 100%; + margin-right: 0px; +} + +.row textarea { + height: 32px; + line-height: 1.3; + white-space: nowrap; + /* 禁止换行 */ + scrollbar-width: none; + /* 隐藏滚动条 */ +} + +/* 分页控件样式 */ +#paginationContainer button { + width: 25px; + height: 20px; + margin: 0 2px; + padding: 0 0; + color: #aaaaaa; + background-color: #ffffff00; + cursor: pointer; + font-size: 15px; +} + +#paginationContainer button.active, +#paginationContainer button:hover { + color: rgb(0, 0, 0); +} + +#paginationContainer button[disabled] { + color: #bbb; + cursor: not-allowed; +} + +/* 自定义滚动条样式 */ +::-webkit-scrollbar { + width: 10px; +} + +::-webkit-scrollbar-thumb { + background-color: #ddd; + border-radius: 4px; + cursor: default; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #ccc; +} + +::-webkit-scrollbar-track { + background-color: #f5f5f5; + cursor: default; +} + +.table-cell-disable { + font-weight: bold; + color: red; + background-color: #FFFFE0; +} + +.table-cell-modified { + font-weight: bold; + color: red; + background-color: #DEFAFF; +} + +.table-cell-clickable { + cursor: pointer; + user-select: none; +} + +/* 主题切换按钮 */ +.checkbox { + opacity: 0; + position: absolute; +} + +.checkbox-label { + float: right; + margin-right: 5px; + margin-top: 20px; + background-color: #444; + width: 40px; + height: 16px; + border-radius: 50px; + position: relative; + padding: 5px; + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + transition: background-color 0.5s ease; +} + +.checkbox-label i { + font-size: 18px; + color: #f39c12; + user-select: none; + transition: opacity 0.5s ease; +} + +.checkbox-label .ball { + background-color: #fff; + width: 22px; + height: 22px; + position: absolute; + right: 2px; + /* 小球保持在右边 */ + top: 2px; + border-radius: 50%; + transition: transform 0.5s ease; +} + +.checkbox-label .label-text { + font-size: 7px; + color: #444; + font-weight: bold; + position: absolute; + top: 48%; + left: 75%; + transform: translateX(-50%) translateY(-50%); + z-index: 1; + /* 文字位于小球上面 */ + user-select: none; + transition: opacity 0.5s ease; +} + + +/* 暗色模式 */ +body.dark { + background-color: #121212; + color: #e0e0e0; +} + +body.dark .container, +body.dark .modal-content { + background-color: #1e1e1e; + box-shadow: 0 0 15px rgba(255, 255, 255, 0.2); +} + +body.dark textarea, +body.dark input[type="text"], +body.dark select, +body.dark input[type="time"] { + background-color: #333; + color: #e0e0e0; + border: 1px solid #555; +} + +body.dark textarea:disabled { + background-color: #222; + color: #888; +} + +body.dark a, +body.dark .blue-span { + color: #80bfff; +} + +body.dark a:hover, +body.dark .blue-span:hover { + color: #3399ff; +} + +body.dark .button-container a, +body.dark .button-container button { + background-color: #2d78b9; + color: #e0e0e0; +} + +body.dark .button-container a:hover, +body.dark .button-container button:hover { + background-color: #1565c0; +} + +body.dark input[type="submit"], +body.dark .button-container button[name="logoutbtn"], +body.dark .modal-content button { + background-color: #ce7c00; + color: #e0e0e0; +} + +body.dark input[type="submit"]:hover, +body.dark .button-container button[name="logoutbtn"]:hover, +body.dark .modal-content button:hover { + background-color: #ba7000; +} + +body.dark #paginationContainer button { + background-color: #1e1e1e; + color: #aaa; +} + +body.dark #paginationContainer button.active, +body.dark #paginationContainer button:hover { + background-color: #333; + color: #fff; +} + +body.dark #logTable th, +body.dark #logTable td, +body.dark #channelTable th, +body.dark #iconTable th, +body.dark #iconTable td, +body.dark #channelBindEPGTable th, +body.dark #channelBindEPGTable td, +body.dark #channelMatchTable th, +body.dark #channelMatchTable td, +body.dark #liveSourceTable th { + background-color: #2c2c2c; + color: #e0e0e0; +} + +body.dark .close:hover, +body.dark .close:focus { + color: #e0e0e0; +} + +body.dark img { + filter: brightness(0.9); +} + +body.dark ::-webkit-scrollbar-thumb { + background-color: #555; +} + +body.dark ::-webkit-scrollbar-thumb:hover { + background-color: #666; +} + +body.dark ::-webkit-scrollbar-track { + background-color: #2a2a2a; +} + +body.dark .table-cell-disable { + color: #ff7f7f; + background-color: #4a4a32; +} + +body.dark .table-cell-modified { + color: #ff7f7f; + background-color: #3b616b; +} + +body.dark .checkbox-label i, +body.dark .checkbox-label .label-text { + color: #eee; +} + +body.dark .checkbox-label .ball { + background-color: #222; +} + +.footer { + cursor: pointer; + color: #2a2a2a; + position: fixed; + bottom: 10px; + width: 100%; + text-align: center; + text-decoration: none; +} + +.lxgw-wenkai-mono-tc-regular { + font-family: "LXGW WenKai Mono TC", consolas, Tahoma, monospace; + font-weight: 400; + font-style: normal; +} \ No newline at end of file diff --git a/assets/defaultConfig.json b/assets/defaultConfig.json new file mode 100644 index 0000000..a310641 --- /dev/null +++ b/assets/defaultConfig.json @@ -0,0 +1,31 @@ +{ + "xml_urls": [], + "days_to_keep": 7, + "start_time": "00:00", + "end_time": "23:59", + "channel_mappings": { + "CCTV$1": "regex:\/^CCTV[-\\s]*(\\d{1,2}(\\s*P(LUS)?|[K\\+])?)(?![\\s-]*(美洲|欧洲)).*\/i" + }, + "channel_bind_epg": [], + "gen_xml": 1, + "include_future_only": 1, + "ret_default": 0, + "tvmao_default": 0, + "all_chs": 0, + "db_type": "mysql", + "gen_list_enable": 0, + "interval_time": 21600, + "mysql": { + "host": "localhost", + "dbname": "phpepg", + "username": "phpepg", + "password": "phpepg" + }, + "live_source_auto_sync": 0, + "live_channel_name_process": 0, + "token": "", + "token_range": 1, + "default_icon": "", + "check_update": 1, + "manage_password": "" +} \ No newline at end of file diff --git a/assets/defaultIconList.json b/assets/defaultIconList.json new file mode 100644 index 0000000..0a670ce --- /dev/null +++ b/assets/defaultIconList.json @@ -0,0 +1,2753 @@ +{ + "1905极限反转": "https://www.mxdyeah.top/static/tvlogo/1905极限反转.png", + "3D电视试验": "https://www.mxdyeah.top/static/tvlogo/3D电视试验.png", + "3D试验": "https://www.mxdyeah.top/static/tvlogo/3D试验.png", + "4K地理": "https://www.mxdyeah.top/static/tvlogo/4K地理.png", + "4K电影": "https://www.mxdyeah.top/static/tvlogo/4K电影.png", + "4K自然": "https://www.mxdyeah.top/static/tvlogo/4K自然.png", + "4K通用": "https://www.mxdyeah.top/static/tvlogo/4K通用.png", + "A&E": "https://www.mxdyeah.top/static/tvlogo/A&E.png", + "ABCAUS": "https://www.mxdyeah.top/static/tvlogo/ABCAUS.png", + "ABCAUSTRALIA": "https://www.mxdyeah.top/static/tvlogo/ABCAUSTRALIA.png", + "ABCNEWS": "https://www.mxdyeah.top/static/tvlogo/ABCNEWS.png", + "ABC新闻": "https://www.mxdyeah.top/static/tvlogo/ABC新闻.png", + "ACCNETWORK": "https://www.mxdyeah.top/static/tvlogo/ACCNETWORK.png", + "AFC": "https://www.mxdyeah.top/static/tvlogo/AFC.png", + "AH": "https://www.mxdyeah.top/static/tvlogo/AH.png", + "ALJAZEERA": "https://www.mxdyeah.top/static/tvlogo/ALJAZEERA.png", + "AMC": "https://www.mxdyeah.top/static/tvlogo/AMC.png", + "AMC最爱电影": "https://www.mxdyeah.top/static/tvlogo/AMC最爱电影.png", + "AMC电影": "https://www.mxdyeah.top/static/tvlogo/AMC电影.png", + "AMERICANHEROESCHANNEL": "https://www.mxdyeah.top/static/tvlogo/AMERICANHEROESCHANNEL.png", + "ANHUI": "https://www.mxdyeah.top/static/tvlogo/ANHUI.png", + "ANIMALPLANET": "https://www.mxdyeah.top/static/tvlogo/ANIMALPLANET.png", + "ANIMAX": "https://www.mxdyeah.top/static/tvlogo/ANIMAX.png", + "ANIMAXHD": "https://www.mxdyeah.top/static/tvlogo/ANIMAXHD.png", + "AQTV": "https://www.mxdyeah.top/static/tvlogo/AQTV.png", + "ARIRANG": "https://www.mxdyeah.top/static/tvlogo/ARIRANG.png", + "ARIRANGTV": "https://www.mxdyeah.top/static/tvlogo/ARIRANGTV.png", + "ASIANFOOD": "https://www.mxdyeah.top/static/tvlogo/ASIANFOOD.png", + "ASIANFOODNETWORK亚洲美食": "https://www.mxdyeah.top/static/tvlogo/ASIANFOODNETWORK亚洲美食.png", + "ASIATRAVEL": "https://www.mxdyeah.top/static/tvlogo/ASIATRAVEL.png", + "ASIAZONGHE": "https://www.mxdyeah.top/static/tvlogo/ASIAZONGHE.png", + "ASTROCRICKET": "https://www.mxdyeah.top/static/tvlogo/ASTROCRICKET.png", + "ASTROSUPERSPORT1": "https://www.mxdyeah.top/static/tvlogo/ASTROSUPERSPORT1.png", + "ASTROSUPERSPORT2": "https://www.mxdyeah.top/static/tvlogo/ASTROSUPERSPORT2.png", + "ASTROSUPERSPORT3": "https://www.mxdyeah.top/static/tvlogo/ASTROSUPERSPORT3.png", + "ASTROSUPERSPORT4": "https://www.mxdyeah.top/static/tvlogo/ASTROSUPERSPORT4.png", + "AXN": "https://www.mxdyeah.top/static/tvlogo/AXN.png", + "AXN亚洲": "https://www.mxdyeah.top/static/tvlogo/AXN亚洲.png", + "BABYFIRST": "https://www.mxdyeah.top/static/tvlogo/BABYFIRST.png", + "BABYTV": "https://www.mxdyeah.top/static/tvlogo/BABYTV.png", + "BBC": "https://www.mxdyeah.top/static/tvlogo/BBC.png", + "BBCAMERICA": "https://www.mxdyeah.top/static/tvlogo/BBCAMERICA.png", + "BBCCBEEBIES": "https://www.mxdyeah.top/static/tvlogo/BBCCBEEBIES.png", + "BBCEARTH": "https://www.mxdyeah.top/static/tvlogo/BBCEARTH.png", + "BBCLIFESTYLE": "https://www.mxdyeah.top/static/tvlogo/BBCLIFESTYLE.png", + "BBCNEWS": "https://www.mxdyeah.top/static/tvlogo/BBCNEWS.png", + "BBCWORLDNEWS": "https://www.mxdyeah.top/static/tvlogo/BBCWORLDNEWS.png", + "BBCWORLDNEWSASIA": "https://www.mxdyeah.top/static/tvlogo/BBCWORLDNEWSASIA.png", + "BEAUTIFULLIFE": "https://www.mxdyeah.top/static/tvlogo/BEAUTIFULLIFE.png", + "BEIJING": "https://www.mxdyeah.top/static/tvlogo/BEIJING.png", + "BEIJINGJISHI": "https://www.mxdyeah.top/static/tvlogo/BEIJINGJISHI.png", + "BEINSPORTSENGLISH2": "https://www.mxdyeah.top/static/tvlogo/BEINSPORTSENGLISH2.png", + "BEINSPORTSUSA": "https://www.mxdyeah.top/static/tvlogo/BEINSPORTSUSA.png", + "BESTV": "https://www.mxdyeah.top/static/tvlogo/BESTV.png", + "BESTV超级体育": "https://www.mxdyeah.top/static/tvlogo/BESTV超级体育.png", + "BET": "https://www.mxdyeah.top/static/tvlogo/BET.png", + "BETHER": "https://www.mxdyeah.top/static/tvlogo/BETHER.png", + "BINGTUAN": "https://www.mxdyeah.top/static/tvlogo/BINGTUAN.png", + "BLOOMBERGTV": "https://www.mxdyeah.top/static/tvlogo/BLOOMBERGTV.png", + "BLUEANTENTERTAINMENT": "https://www.mxdyeah.top/static/tvlogo/BLUEANTENTERTAINMENT.png", + "BLUEANTEXTREME": "https://www.mxdyeah.top/static/tvlogo/BLUEANTEXTREME.png", + "BOOMERANG": "https://www.mxdyeah.top/static/tvlogo/BOOMERANG.png", + "BRAVO": "https://www.mxdyeah.top/static/tvlogo/BRAVO.png", + "BRTV北京纪实": "https://www.mxdyeah.top/static/tvlogo/BRTV北京纪实.png", + "BTSPCRT1": "https://www.mxdyeah.top/static/tvlogo/BTSPCRT1.png", + "BTSPCRT2": "https://www.mxdyeah.top/static/tvlogo/BTSPCRT2.png", + "BTSPCRT3": "https://www.mxdyeah.top/static/tvlogo/BTSPCRT3.png", + "BTV体育": "https://www.mxdyeah.top/static/tvlogo/BTV体育.png", + "BTV影视": "https://www.mxdyeah.top/static/tvlogo/BTV影视.png", + "BTV文艺": "https://www.mxdyeah.top/static/tvlogo/BTV文艺.png", + "BTV新闻": "https://www.mxdyeah.top/static/tvlogo/BTV新闻.png", + "BTV生活": "https://www.mxdyeah.top/static/tvlogo/BTV生活.png", + "BTV科教": "https://www.mxdyeah.top/static/tvlogo/BTV科教.png", + "BTV财经": "https://www.mxdyeah.top/static/tvlogo/BTV财经.png", + "CARTOONITO": "https://www.mxdyeah.top/static/tvlogo/CARTOONITO.png", + "CARTOONNETWORK": "https://www.mxdyeah.top/static/tvlogo/CARTOONNETWORK.png", + "CATCHPLAY": "https://www.mxdyeah.top/static/tvlogo/CATCHPLAY.png", + "CATCHPLAYBEYOND": "https://www.mxdyeah.top/static/tvlogo/CATCHPLAYBEYOND.png", + "CATCHPLAY电影": "https://www.mxdyeah.top/static/tvlogo/CATCHPLAY电影.png", + "CBEEBIES": "https://www.mxdyeah.top/static/tvlogo/CBEEBIES.png", + "CBN幸福剧场": "https://www.mxdyeah.top/static/tvlogo/CBN幸福剧场.png", + "CBN幸福娱乐": "https://www.mxdyeah.top/static/tvlogo/CBN幸福娱乐.png", + "CBN每日影院": "https://www.mxdyeah.top/static/tvlogo/CBN每日影院.png", + "CBN风尚生活": "https://www.mxdyeah.top/static/tvlogo/CBN风尚生活.png", + "CBSSPORTSNETWORK": "https://www.mxdyeah.top/static/tvlogo/CBSSPORTSNETWORK.png", + "CCTV1": "https://www.mxdyeah.top/static/tvlogo/CCTV1.png", + "CCTV10": "https://www.mxdyeah.top/static/tvlogo/CCTV10.png", + "CCTV11": "https://www.mxdyeah.top/static/tvlogo/CCTV11.png", + "CCTV12": "https://www.mxdyeah.top/static/tvlogo/CCTV12.png", + "CCTV13": "https://www.mxdyeah.top/static/tvlogo/CCTV13.png", + "CCTV14": "https://www.mxdyeah.top/static/tvlogo/CCTV14.png", + "CCTV15": "https://www.mxdyeah.top/static/tvlogo/CCTV15.png", + "CCTV16": "https://www.mxdyeah.top/static/tvlogo/CCTV16.png", + "CCTV17": "https://www.mxdyeah.top/static/tvlogo/CCTV17.png", + "CCTV2": "https://www.mxdyeah.top/static/tvlogo/CCTV2.png", + "CCTV3": "https://www.mxdyeah.top/static/tvlogo/CCTV3.png", + "CCTV3D": "https://www.mxdyeah.top/static/tvlogo/CCTV3D.png", + "CCTV4": "https://www.mxdyeah.top/static/tvlogo/CCTV4.png", + "CCTV4AME": "https://www.mxdyeah.top/static/tvlogo/CCTV4AME.png", + "CCTV4EUO": "https://www.mxdyeah.top/static/tvlogo/CCTV4EUO.png", + "CCTV4K": "https://www.mxdyeah.top/static/tvlogo/CCTV4K.png", + "CCTV4欧洲": "https://www.mxdyeah.top/static/tvlogo/CCTV4欧洲.png", + "CCTV4美洲": "https://www.mxdyeah.top/static/tvlogo/CCTV4美洲.png", + "CCTV5+": "https://www.mxdyeah.top/static/tvlogo/CCTV5+.png", + "CCTV5": "https://www.mxdyeah.top/static/tvlogo/CCTV5.png", + "CCTV6": "https://www.mxdyeah.top/static/tvlogo/CCTV6.png", + "CCTV7": "https://www.mxdyeah.top/static/tvlogo/CCTV7.png", + "CCTV8": "https://www.mxdyeah.top/static/tvlogo/CCTV8.png", + "CCTV8K": "https://www.mxdyeah.top/static/tvlogo/CCTV8K.png", + "CCTV9": "https://www.mxdyeah.top/static/tvlogo/CCTV9.png", + "CCTV娱乐": "https://www.mxdyeah.top/static/tvlogo/CCTV娱乐.png", + "CCTV戏曲": "https://www.mxdyeah.top/static/tvlogo/CCTV戏曲.png", + "CDTV1": "https://www.mxdyeah.top/static/tvlogo/CDTV1.png", + "CDTV2": "https://www.mxdyeah.top/static/tvlogo/CDTV2.png", + "CDTV3": "https://www.mxdyeah.top/static/tvlogo/CDTV3.png", + "CDTV4": "https://www.mxdyeah.top/static/tvlogo/CDTV4.png", + "CDTV5": "https://www.mxdyeah.top/static/tvlogo/CDTV5.png", + "CDTV6": "https://www.mxdyeah.top/static/tvlogo/CDTV6.png", + "CETV1": "https://www.mxdyeah.top/static/tvlogo/CETV1.png", + "CETV2": "https://www.mxdyeah.top/static/tvlogo/CETV2.png", + "CETV3": "https://www.mxdyeah.top/static/tvlogo/CETV3.png", + "CETV4": "https://www.mxdyeah.top/static/tvlogo/CETV4.png", + "CETV早期教育": "https://www.mxdyeah.top/static/tvlogo/CETV早期教育.png", + "CGTN": "https://www.mxdyeah.top/static/tvlogo/CGTN.png", + "CGTNDOC": "https://www.mxdyeah.top/static/tvlogo/CGTNDOC.png", + "CGTNDOCUMENTARY": "https://www.mxdyeah.top/static/tvlogo/CGTNDOCUMENTARY.png", + "CGTN俄语": "https://www.mxdyeah.top/static/tvlogo/CGTN俄语.png", + "CGTN法语": "https://www.mxdyeah.top/static/tvlogo/CGTN法语.png", + "CGTN纪录": "https://www.mxdyeah.top/static/tvlogo/CGTN纪录.png", + "CGTN英语": "https://www.mxdyeah.top/static/tvlogo/CGTN英语.png", + "CGTN西班牙语": "https://www.mxdyeah.top/static/tvlogo/CGTN西班牙语.png", + "CGTN西语": "https://www.mxdyeah.top/static/tvlogo/CGTN西语.png", + "CGTN记录": "https://www.mxdyeah.top/static/tvlogo/CGTN记录.png", + "CGTN阿拉伯语": "https://www.mxdyeah.top/static/tvlogo/CGTN阿拉伯语.png", + "CGTN阿语": "https://www.mxdyeah.top/static/tvlogo/CGTN阿语.png", + "CHAMPIONTV1": "https://www.mxdyeah.top/static/tvlogo/CHAMPIONTV1.png", + "CHAMPIONTV2": "https://www.mxdyeah.top/static/tvlogo/CHAMPIONTV2.png", + "CHANNELNEWSASIA": "https://www.mxdyeah.top/static/tvlogo/CHANNELNEWSASIA.png", + "CHANNELV": "https://www.mxdyeah.top/static/tvlogo/CHANNELV.png", + "CHC动作电影": "https://www.mxdyeah.top/static/tvlogo/CHC动作电影.png", + "CHC家庭影院": "https://www.mxdyeah.top/static/tvlogo/CHC家庭影院.png", + "CHC家庭电影": "https://www.mxdyeah.top/static/tvlogo/CHC家庭电影.png", + "CHC影迷电影": "https://www.mxdyeah.top/static/tvlogo/CHC影迷电影.png", + "CHC高清电影": "https://www.mxdyeah.top/static/tvlogo/CHC高清电影.png", + "CHONGQING": "https://www.mxdyeah.top/static/tvlogo/CHONGQING.png", + "CI": "https://www.mxdyeah.top/static/tvlogo/CI.png", + "CIBN": "https://www.mxdyeah.top/static/tvlogo/CIBN.png", + "CIBN军事": "https://www.mxdyeah.top/static/tvlogo/CIBN军事.png", + "CIBN动作影院": "https://www.mxdyeah.top/static/tvlogo/CIBN动作影院.png", + "CIBN动画乐园": "https://www.mxdyeah.top/static/tvlogo/CIBN动画乐园.png", + "CIBN古装剧场": "https://www.mxdyeah.top/static/tvlogo/CIBN古装剧场.png", + "CIBN喜剧影院": "https://www.mxdyeah.top/static/tvlogo/CIBN喜剧影院.png", + "CIBN好莱坞": "https://www.mxdyeah.top/static/tvlogo/CIBN好莱坞.png", + "CIBN微电影": "https://www.mxdyeah.top/static/tvlogo/CIBN微电影.png", + "CIBN情感影院": "https://www.mxdyeah.top/static/tvlogo/CIBN情感影院.png", + "CIBN汽车": "https://www.mxdyeah.top/static/tvlogo/CIBN汽车.png", + "CIBN流金岁月": "https://www.mxdyeah.top/static/tvlogo/CIBN流金岁月.png", + "CIBN电影": "https://www.mxdyeah.top/static/tvlogo/CIBN电影.png", + "CIBN留学世界": "https://www.mxdyeah.top/static/tvlogo/CIBN留学世界.png", + "CIBN真人秀": "https://www.mxdyeah.top/static/tvlogo/CIBN真人秀.png", + "CIBN精品影院": "https://www.mxdyeah.top/static/tvlogo/CIBN精品影院.png", + "CIBN纪录片": "https://www.mxdyeah.top/static/tvlogo/CIBN纪录片.png", + "CIBN经典剧场": "https://www.mxdyeah.top/static/tvlogo/CIBN经典剧场.png", + "CIBN综合": "https://www.mxdyeah.top/static/tvlogo/CIBN综合.png", + "CIBN艺术院线": "https://www.mxdyeah.top/static/tvlogo/CIBN艺术院线.png", + "CIBN通用": "https://www.mxdyeah.top/static/tvlogo/CIBN通用.png", + "CIBN院线大片": "https://www.mxdyeah.top/static/tvlogo/CIBN院线大片.png", + "CIBN风尚运动": "https://www.mxdyeah.top/static/tvlogo/CIBN风尚运动.png", + "CIBN骄阳剧场": "https://www.mxdyeah.top/static/tvlogo/CIBN骄阳剧场.png", + "CINEMAWORLD": "https://www.mxdyeah.top/static/tvlogo/CINEMAWORLD.png", + "CINEMAX": "https://www.mxdyeah.top/static/tvlogo/CINEMAX.png", + "CINEMAXHD": "https://www.mxdyeah.top/static/tvlogo/CINEMAXHD.png", + "CINEMAXWEST": "https://www.mxdyeah.top/static/tvlogo/CINEMAXWEST.png", + "CITY都市剧场": "https://www.mxdyeah.top/static/tvlogo/CITY都市剧场.png", + "CI罪案侦查": "https://www.mxdyeah.top/static/tvlogo/CI罪案侦查.png", + "CLASSICA古典乐": "https://www.mxdyeah.top/static/tvlogo/CLASSICA古典乐.png", + "CLTV": "https://www.mxdyeah.top/static/tvlogo/CLTV.png", + "CMT": "https://www.mxdyeah.top/static/tvlogo/CMT.png", + "CMUSIC": "https://www.mxdyeah.top/static/tvlogo/CMUSIC.png", + "CNA": "https://www.mxdyeah.top/static/tvlogo/CNA.png", + "CNA亚洲新闻": "https://www.mxdyeah.top/static/tvlogo/CNA亚洲新闻.png", + "CNBC": "https://www.mxdyeah.top/static/tvlogo/CNBC.png", + "CNBCASIA": "https://www.mxdyeah.top/static/tvlogo/CNBCASIA.png", + "CNBCASIA财经": "https://www.mxdyeah.top/static/tvlogo/CNBCASIA财经.png", + "CNBCHONGKONG": "https://www.mxdyeah.top/static/tvlogo/CNBCHONGKONG.png", + "CNC": "https://www.mxdyeah.top/static/tvlogo/CNC.png", + "CNEX": "https://www.mxdyeah.top/static/tvlogo/CNEX.png", + "CNN": "https://www.mxdyeah.top/static/tvlogo/CNN.png", + "CNNNEWS": "https://www.mxdyeah.top/static/tvlogo/CNNNEWS.png", + "CNN国际新闻": "https://www.mxdyeah.top/static/tvlogo/CNN国际新闻.png", + "CN卡通": "https://www.mxdyeah.top/static/tvlogo/CN卡通.png", + "COMEDYCENTRAL": "https://www.mxdyeah.top/static/tvlogo/COMEDYCENTRAL.png", + "COOKINGCHANNEL": "https://www.mxdyeah.top/static/tvlogo/COOKINGCHANNEL.png", + "COSTARTV": "https://www.mxdyeah.top/static/tvlogo/COSTARTV.png", + "CQCCN": "https://www.mxdyeah.top/static/tvlogo/CQCCN.png", + "CRIME&INVESTIGATION": "https://www.mxdyeah.top/static/tvlogo/CRIME&INVESTIGATION.png", + "CRIME": "https://www.mxdyeah.top/static/tvlogo/CRIME.png", + "CRIMEINVESTIGATION": "https://www.mxdyeah.top/static/tvlogo/CRIMEINVESTIGATION.png", + "CS": "https://www.mxdyeah.top/static/tvlogo/CS.png", + "CSPAN": "https://www.mxdyeah.top/static/tvlogo/CSPAN.png", + "CSPAN2": "https://www.mxdyeah.top/static/tvlogo/CSPAN2.png", + "CTI5": "https://www.mxdyeah.top/static/tvlogo/CTI5.png", + "CTIENTERTAINMENT": "https://www.mxdyeah.top/static/tvlogo/CTIENTERTAINMENT.png", + "CTIVARIETY": "https://www.mxdyeah.top/static/tvlogo/CTIVARIETY.png", + "CYZHTV": "https://www.mxdyeah.top/static/tvlogo/CYZHTV.png", + "DAAI": "https://www.mxdyeah.top/static/tvlogo/DAAI.png", + "DAAI2": "https://www.mxdyeah.top/static/tvlogo/DAAI2.png", + "DAVINCI": "https://www.mxdyeah.top/static/tvlogo/DAVINCI.png", + "DAZN": "https://www.mxdyeah.top/static/tvlogo/DAZN.png", + "DESTINATIONAMERICA": "https://www.mxdyeah.top/static/tvlogo/DESTINATIONAMERICA.png", + "DIANJINGTIANTANG": "https://www.mxdyeah.top/static/tvlogo/DIANJINGTIANTANG.png", + "DISCOVERY": "https://www.mxdyeah.top/static/tvlogo/DISCOVERY.png", + "DISCOVERYASIA": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYASIA.png", + "DISCOVERYCHANNEL": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYCHANNEL.png", + "DISCOVERYDMAX": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYDMAX.png", + "DISCOVERYEVE": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYEVE.png", + "DISCOVERYFAMILYCHANNEL": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYFAMILYCHANNEL.png", + "DISCOVERYHD": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYHD.png", + "DISCOVERYLIFE": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYLIFE.png", + "DISCOVERYSCIENCE": "https://www.mxdyeah.top/static/tvlogo/DISCOVERYSCIENCE.png", + "DISCOVERY亚洲": "https://www.mxdyeah.top/static/tvlogo/DISCOVERY亚洲.png", + "DISCOVERY科学": "https://www.mxdyeah.top/static/tvlogo/DISCOVERY科学.png", + "DISNEY": "https://www.mxdyeah.top/static/tvlogo/DISNEY.png", + "DISNEYCHANNEL": "https://www.mxdyeah.top/static/tvlogo/DISNEYCHANNEL.png", + "DISNEYJUNIOR": "https://www.mxdyeah.top/static/tvlogo/DISNEYJUNIOR.png", + "DISNEYXD": "https://www.mxdyeah.top/static/tvlogo/DISNEYXD.png", + "DIVA": "https://www.mxdyeah.top/static/tvlogo/DIVA.png", + "DIYICAIJING": "https://www.mxdyeah.top/static/tvlogo/DIYICAIJING.png", + "DMAX": "https://www.mxdyeah.top/static/tvlogo/DMAX.png", + "DOG狗": "https://www.mxdyeah.top/static/tvlogo/DOG狗.png", + "DONGFANG": "https://www.mxdyeah.top/static/tvlogo/DONGFANG.png", + "DONGNAN": "https://www.mxdyeah.top/static/tvlogo/DONGNAN.png", + "DOX4K": "https://www.mxdyeah.top/static/tvlogo/DOX4K.png", + "DOXCINEMA": "https://www.mxdyeah.top/static/tvlogo/DOXCINEMA.png", + "DOXJUCHANG": "https://www.mxdyeah.top/static/tvlogo/DOXJUCHANG.png", + "DOXTV": "https://www.mxdyeah.top/static/tvlogo/DOXTV.png", + "DOXTV高清": "https://www.mxdyeah.top/static/tvlogo/DOXTV高清.png", + "DOXXINYI": "https://www.mxdyeah.top/static/tvlogo/DOXXINYI.png", + "DOXXINZHI": "https://www.mxdyeah.top/static/tvlogo/DOXXINZHI.png", + "DOXYAQU": "https://www.mxdyeah.top/static/tvlogo/DOXYAQU.png", + "DOXYIJIA": "https://www.mxdyeah.top/static/tvlogo/DOXYIJIA.png", + "DOXYINGHUA": "https://www.mxdyeah.top/static/tvlogo/DOXYINGHUA.png", + "DOXYINGLUN": "https://www.mxdyeah.top/static/tvlogo/DOXYINGLUN.png", + "DOX剧场": "https://www.mxdyeah.top/static/tvlogo/DOX剧场.png", + "DOX怡家": "https://www.mxdyeah.top/static/tvlogo/DOX怡家.png", + "DOX新知": "https://www.mxdyeah.top/static/tvlogo/DOX新知.png", + "DOX新艺": "https://www.mxdyeah.top/static/tvlogo/DOX新艺.png", + "DOX映画": "https://www.mxdyeah.top/static/tvlogo/DOX映画.png", + "DOX环映": "https://www.mxdyeah.top/static/tvlogo/DOX环映.png", + "DOX红色经典": "https://www.mxdyeah.top/static/tvlogo/DOX红色经典.png", + "DOX美剧": "https://www.mxdyeah.top/static/tvlogo/DOX美剧.png", + "DOX英伦": "https://www.mxdyeah.top/static/tvlogo/DOX英伦.png", + "DOX院线": "https://www.mxdyeah.top/static/tvlogo/DOX院线.png", + "DOX雅趣": "https://www.mxdyeah.top/static/tvlogo/DOX雅趣.png", + "DRAMA": "https://www.mxdyeah.top/static/tvlogo/DRAMA.png", + "DREAMWORKS": "https://www.mxdyeah.top/static/tvlogo/DREAMWORKS.png", + "DREAMWORKS梦工厂动画": "https://www.mxdyeah.top/static/tvlogo/DREAMWORKS梦工厂动画.png", + "DV生活": "https://www.mxdyeah.top/static/tvlogo/DV生活.png", + "DW": "https://www.mxdyeah.top/static/tvlogo/DW.png", + "DW德国之声": "https://www.mxdyeah.top/static/tvlogo/DW德国之声.png", + "E!": "https://www.mxdyeah.top/static/tvlogo/E!.png", + "E!ENTERTAINMENT": "https://www.mxdyeah.top/static/tvlogo/E!ENTERTAINMENT.png", + "EATASPORTS1": "https://www.mxdyeah.top/static/tvlogo/EATASPORTS1.png", + "EATASPORTS3": "https://www.mxdyeah.top/static/tvlogo/EATASPORTS3.png", + "EBCASIANEWS": "https://www.mxdyeah.top/static/tvlogo/EBCASIANEWS.png", + "EBCASIAWEISHI": "https://www.mxdyeah.top/static/tvlogo/EBCASIAWEISHI.png", + "EBCDRAMA": "https://www.mxdyeah.top/static/tvlogo/EBCDRAMA.png", + "EBCFINANCIALNEWS": "https://www.mxdyeah.top/static/tvlogo/EBCFINANCIALNEWS.png", + "EBCMOVIES": "https://www.mxdyeah.top/static/tvlogo/EBCMOVIES.png", + "EBCNEWS": "https://www.mxdyeah.top/static/tvlogo/EBCNEWS.png", + "EBCSUPER": "https://www.mxdyeah.top/static/tvlogo/EBCSUPER.png", + "EBCVARIETY": "https://www.mxdyeah.top/static/tvlogo/EBCVARIETY.png", + "EBCWESTERNMOVIES": "https://www.mxdyeah.top/static/tvlogo/EBCWESTERNMOVIES.png", + "EBCYOYOTV": "https://www.mxdyeah.top/static/tvlogo/EBCYOYOTV.png", + "EFTV": "https://www.mxdyeah.top/static/tvlogo/EFTV.png", + "EFTV运通财经": "https://www.mxdyeah.top/static/tvlogo/EFTV运通财经.png", + "ELEVEN+": "https://www.mxdyeah.top/static/tvlogo/ELEVEN+.png", + "ELEVEN1": "https://www.mxdyeah.top/static/tvlogo/ELEVEN1.png", + "ELEVEN2": "https://www.mxdyeah.top/static/tvlogo/ELEVEN2.png", + "ELEVEN3": "https://www.mxdyeah.top/static/tvlogo/ELEVEN3.png", + "ELEVENPLUS": "https://www.mxdyeah.top/static/tvlogo/ELEVENPLUS.png", + "ELEVENSPORTS1": "https://www.mxdyeah.top/static/tvlogo/ELEVENSPORTS1.png", + "ELEVENSPORTS2": "https://www.mxdyeah.top/static/tvlogo/ELEVENSPORTS2.png", + "ELEVEN体育一": "https://www.mxdyeah.top/static/tvlogo/ELEVEN体育一.png", + "ELEVEN体育二": "https://www.mxdyeah.top/static/tvlogo/ELEVEN体育二.png", + "ELTAENT": "https://www.mxdyeah.top/static/tvlogo/ELTAENT.png", + "ELTASPORTS2": "https://www.mxdyeah.top/static/tvlogo/ELTASPORTS2.png", + "ELTAYINGJU": "https://www.mxdyeah.top/static/tvlogo/ELTAYINGJU.png", + "ELTAZONGHEHD": "https://www.mxdyeah.top/static/tvlogo/ELTAZONGHEHD.png", + "ELTA体育": "https://www.mxdyeah.top/static/tvlogo/ELTA体育.png", + "ELTA体育1": "https://www.mxdyeah.top/static/tvlogo/ELTA体育1.png", + "ELTA体育2": "https://www.mxdyeah.top/static/tvlogo/ELTA体育2.png", + "ELTA体育3": "https://www.mxdyeah.top/static/tvlogo/ELTA体育3.png", + "ELTA体育4": "https://www.mxdyeah.top/static/tvlogo/ELTA体育4.png", + "ELTA体育MAX1": "https://www.mxdyeah.top/static/tvlogo/ELTA体育MAX1.png", + "ELTA体育MAX2": "https://www.mxdyeah.top/static/tvlogo/ELTA体育MAX2.png", + "ELTA体育MAX3": "https://www.mxdyeah.top/static/tvlogo/ELTA体育MAX3.png", + "ELTA体育MAX4": "https://www.mxdyeah.top/static/tvlogo/ELTA体育MAX4.png", + "ELTA奥运1": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运1.png", + "ELTA奥运2": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运2.png", + "ELTA奥运3": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运3.png", + "ELTA奥运4": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运4.png", + "ELTA奥运5": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运5.png", + "ELTA奥运6": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运6.png", + "ELTA奥运7": "https://www.mxdyeah.top/static/tvlogo/ELTA奥运7.png", + "ELTA娱乐": "https://www.mxdyeah.top/static/tvlogo/ELTA娱乐.png", + "ELTA影剧": "https://www.mxdyeah.top/static/tvlogo/ELTA影剧.png", + "ELTA日韩": "https://www.mxdyeah.top/static/tvlogo/ELTA日韩.png", + "ELTA生活旅游": "https://www.mxdyeah.top/static/tvlogo/ELTA生活旅游.png", + "ELTA生活英语": "https://www.mxdyeah.top/static/tvlogo/ELTA生活英语.png", + "ELTA综合": "https://www.mxdyeah.top/static/tvlogo/ELTA综合.png", + "ELTV": "https://www.mxdyeah.top/static/tvlogo/ELTV.png", + "ELTV生活英语": "https://www.mxdyeah.top/static/tvlogo/ELTV生活英语.png", + "EMEIDIANYING": "https://www.mxdyeah.top/static/tvlogo/EMEIDIANYING.png", + "ESPN": "https://www.mxdyeah.top/static/tvlogo/ESPN.png", + "ESPN2": "https://www.mxdyeah.top/static/tvlogo/ESPN2.png", + "ESPNNEWS": "https://www.mxdyeah.top/static/tvlogo/ESPNNEWS.png", + "ESPNU": "https://www.mxdyeah.top/static/tvlogo/ESPNU.png", + "ETODAY": "https://www.mxdyeah.top/static/tvlogo/ETODAY.png", + "ETTODAY": "https://www.mxdyeah.top/static/tvlogo/ETTODAY.png", + "ETTODAY综合": "https://www.mxdyeah.top/static/tvlogo/ETTODAY综合.png", + "EURONEWS": "https://www.mxdyeah.top/static/tvlogo/EURONEWS.png", + "EUROSPORT": "https://www.mxdyeah.top/static/tvlogo/EUROSPORT.png", + "EUROSPORT1": "https://www.mxdyeah.top/static/tvlogo/EUROSPORT1.png", + "EUROSPORT2": "https://www.mxdyeah.top/static/tvlogo/EUROSPORT2.png", + "EVE": "https://www.mxdyeah.top/static/tvlogo/EVE.png", + "EYELVYOU": "https://www.mxdyeah.top/static/tvlogo/EYELVYOU.png", + "EYETV戏剧": "https://www.mxdyeah.top/static/tvlogo/EYETV戏剧.png", + "EYETV旅游": "https://www.mxdyeah.top/static/tvlogo/EYETV旅游.png", + "EYEXIJU": "https://www.mxdyeah.top/static/tvlogo/EYEXIJU.png", + "EYE戏剧": "https://www.mxdyeah.top/static/tvlogo/EYE戏剧.png", + "EYE旅游": "https://www.mxdyeah.top/static/tvlogo/EYE旅游.png", + "FASHIONBOX": "https://www.mxdyeah.top/static/tvlogo/FASHIONBOX.png", + "FASHIONONE": "https://www.mxdyeah.top/static/tvlogo/FASHIONONE.png", + "FASHIONTV": "https://www.mxdyeah.top/static/tvlogo/FASHIONTV.png", + "FENGHUANGXIANGGANG": "https://www.mxdyeah.top/static/tvlogo/FENGHUANGXIANGGANG.png", + "FENGHUANGZHONGWEN": "https://www.mxdyeah.top/static/tvlogo/FENGHUANGZHONGWEN.png", + "FENGHUANGZIXUN": "https://www.mxdyeah.top/static/tvlogo/FENGHUANGZIXUN.png", + "FIGHTNETWORK": "https://www.mxdyeah.top/static/tvlogo/FIGHTNETWORK.png", + "FIGHTSPORTHD": "https://www.mxdyeah.top/static/tvlogo/FIGHTSPORTHD.png", + "FIRSTMOIVES": "https://www.mxdyeah.top/static/tvlogo/FIRSTMOIVES.png", + "FOODNETWORK": "https://www.mxdyeah.top/static/tvlogo/FOODNETWORK.png", + "FOODNETWORK美食": "https://www.mxdyeah.top/static/tvlogo/FOODNETWORK美食.png", + "FOOLDPLANET": "https://www.mxdyeah.top/static/tvlogo/FOOLDPLANET.png", + "FOX": "https://www.mxdyeah.top/static/tvlogo/FOX.png", + "FOXBUSINESSNETWORK": "https://www.mxdyeah.top/static/tvlogo/FOXBUSINESSNETWORK.png", + "FOXCRIME": "https://www.mxdyeah.top/static/tvlogo/FOXCRIME.png", + "FOXFAMILY": "https://www.mxdyeah.top/static/tvlogo/FOXFAMILY.png", + "FOXFAMILYMOVIES": "https://www.mxdyeah.top/static/tvlogo/FOXFAMILYMOVIES.png", + "FOXHD": "https://www.mxdyeah.top/static/tvlogo/FOXHD.png", + "FOXLIVE": "https://www.mxdyeah.top/static/tvlogo/FOXLIVE.png", + "FOXMOVIES": "https://www.mxdyeah.top/static/tvlogo/FOXMOVIES.png", + "FOXNEWS": "https://www.mxdyeah.top/static/tvlogo/FOXNEWS.png", + "FOXNOWNEWS": "https://www.mxdyeah.top/static/tvlogo/FOXNOWNEWS.png", + "FOXSPORTS": "https://www.mxdyeah.top/static/tvlogo/FOXSPORTS.png", + "FOXSPORTS1": "https://www.mxdyeah.top/static/tvlogo/FOXSPORTS1.png", + "FOXSPORTS2": "https://www.mxdyeah.top/static/tvlogo/FOXSPORTS2.png", + "FOXSPORTS3": "https://www.mxdyeah.top/static/tvlogo/FOXSPORTS3.png", + "FOX体育": "https://www.mxdyeah.top/static/tvlogo/FOX体育.png", + "FOX体育2": "https://www.mxdyeah.top/static/tvlogo/FOX体育2.png", + "FOX体育3": "https://www.mxdyeah.top/static/tvlogo/FOX体育3.png", + "FOX动作电影": "https://www.mxdyeah.top/static/tvlogo/FOX动作电影.png", + "FOX家庭影院": "https://www.mxdyeah.top/static/tvlogo/FOX家庭影院.png", + "FOX家庭电影": "https://www.mxdyeah.top/static/tvlogo/FOX家庭电影.png", + "FOX新闻": "https://www.mxdyeah.top/static/tvlogo/FOX新闻.png", + "FOX生活": "https://www.mxdyeah.top/static/tvlogo/FOX生活.png", + "FOX电影": "https://www.mxdyeah.top/static/tvlogo/FOX电影.png", + "FOX罪案调查": "https://www.mxdyeah.top/static/tvlogo/FOX罪案调查.png", + "FOX警匪": "https://www.mxdyeah.top/static/tvlogo/FOX警匪.png", + "FOX财经新闻": "https://www.mxdyeah.top/static/tvlogo/FOX财经新闻.png", + "FRANCE24": "https://www.mxdyeah.top/static/tvlogo/FRANCE24.png", + "FREEFORM": "https://www.mxdyeah.top/static/tvlogo/FREEFORM.png", + "FTV1": "https://www.mxdyeah.top/static/tvlogo/FTV1.png", + "FTVNEWS": "https://www.mxdyeah.top/static/tvlogo/FTVNEWS.png", + "FTVTAIWAN": "https://www.mxdyeah.top/static/tvlogo/FTVTAIWAN.png", + "FTVZONGYI": "https://www.mxdyeah.top/static/tvlogo/FTVZONGYI.png", + "FUN探索娱乐": "https://www.mxdyeah.top/static/tvlogo/FUN探索娱乐.png", + "FUSEHD": "https://www.mxdyeah.top/static/tvlogo/FUSEHD.png", + "FX": "https://www.mxdyeah.top/static/tvlogo/FX.png", + "FXHD": "https://www.mxdyeah.top/static/tvlogo/FXHD.png", + "FXMOVIE": "https://www.mxdyeah.top/static/tvlogo/FXMOVIE.png", + "FXX": "https://www.mxdyeah.top/static/tvlogo/FXX.png", + "FYI": "https://www.mxdyeah.top/static/tvlogo/FYI.png", + "GANSU": "https://www.mxdyeah.top/static/tvlogo/GANSU.png", + "GDTV3": "https://www.mxdyeah.top/static/tvlogo/GDTV3.png", + "GDTV4": "https://www.mxdyeah.top/static/tvlogo/GDTV4.png", + "GDTV6": "https://www.mxdyeah.top/static/tvlogo/GDTV6.png", + "GDTV8": "https://www.mxdyeah.top/static/tvlogo/GDTV8.png", + "GDTVECO": "https://www.mxdyeah.top/static/tvlogo/GDTVECO.png", + "GDTVENT": "https://www.mxdyeah.top/static/tvlogo/GDTVENT.png", + "GDTVMOV": "https://www.mxdyeah.top/static/tvlogo/GDTVMOV.png", + "GDTVSHAO": "https://www.mxdyeah.top/static/tvlogo/GDTVSHAO.png", + "GINXESPORTSTV": "https://www.mxdyeah.top/static/tvlogo/GINXESPORTSTV.png", + "GINX电子体育": "https://www.mxdyeah.top/static/tvlogo/GINX电子体育.png", + "GLOBALNEWS": "https://www.mxdyeah.top/static/tvlogo/GLOBALNEWS.png", + "GLOBALTREKKER": "https://www.mxdyeah.top/static/tvlogo/GLOBALTREKKER.png", + "GLOBETROTTER环游旅行家": "https://www.mxdyeah.top/static/tvlogo/GLOBETROTTER环游旅行家.png", + "GMTV": "https://www.mxdyeah.top/static/tvlogo/GMTV.png", + "GOLDSUNTV": "https://www.mxdyeah.top/static/tvlogo/GOLDSUNTV.png", + "GOLFCHANNEL": "https://www.mxdyeah.top/static/tvlogo/GOLFCHANNEL.png", + "GOODTV": "https://www.mxdyeah.top/static/tvlogo/GOODTV.png", + "GOODTV2": "https://www.mxdyeah.top/static/tvlogo/GOODTV2.png", + "GREATMOVIES": "https://www.mxdyeah.top/static/tvlogo/GREATMOVIES.png", + "GRTN文化": "https://www.mxdyeah.top/static/tvlogo/GRTN文化.png", + "GSTV": "https://www.mxdyeah.top/static/tvlogo/GSTV.png", + "GTVDRAMAHD": "https://www.mxdyeah.top/static/tvlogo/GTVDRAMAHD.png", + "GTVENTERTAINMENT": "https://www.mxdyeah.top/static/tvlogo/GTVENTERTAINMENT.png", + "GTVONEHD": "https://www.mxdyeah.top/static/tvlogo/GTVONEHD.png", + "GTVVARIETYHD": "https://www.mxdyeah.top/static/tvlogo/GTVVARIETYHD.png", + "GTVYOUXI": "https://www.mxdyeah.top/static/tvlogo/GTVYOUXI.png", + "GTV游戏竞技": "https://www.mxdyeah.top/static/tvlogo/GTV游戏竞技.png", + "GUANGDONG": "https://www.mxdyeah.top/static/tvlogo/GUANGDONG.png", + "GUANGXI": "https://www.mxdyeah.top/static/tvlogo/GUANGXI.png", + "GUIZHOU": "https://www.mxdyeah.top/static/tvlogo/GUIZHOU.png", + "Gansu5": "https://www.mxdyeah.top/static/tvlogo/Gansu5.png", + "G导视": "https://www.mxdyeah.top/static/tvlogo/G导视.png", + "HAKKATV": "https://www.mxdyeah.top/static/tvlogo/HAKKATV.png", + "HALLMARK": "https://www.mxdyeah.top/static/tvlogo/HALLMARK.png", + "HALLMARKDRAMAHD": "https://www.mxdyeah.top/static/tvlogo/HALLMARKDRAMAHD.png", + "HALLMARKMOVIES&MYSTERIESHD": "https://www.mxdyeah.top/static/tvlogo/HALLMARKMOVIES&MYSTERIESHD.png", + "HANDSUP": "https://www.mxdyeah.top/static/tvlogo/HANDSUP.png", + "HAPPY": "https://www.mxdyeah.top/static/tvlogo/HAPPY.png", + "HBLS": "https://www.mxdyeah.top/static/tvlogo/HBLS.png", + "HBO": "https://www.mxdyeah.top/static/tvlogo/HBO.png", + "HBO1": "https://www.mxdyeah.top/static/tvlogo/HBO1.png", + "HBO2": "https://www.mxdyeah.top/static/tvlogo/HBO2.png", + "HBOCOMEDYHD": "https://www.mxdyeah.top/static/tvlogo/HBOCOMEDYHD.png", + "HBOFAMILY": "https://www.mxdyeah.top/static/tvlogo/HBOFAMILY.png", + "HBOFAMILYEAST": "https://www.mxdyeah.top/static/tvlogo/HBOFAMILYEAST.png", + "HBOGO": "https://www.mxdyeah.top/static/tvlogo/HBOGO.png", + "HBOHD": "https://www.mxdyeah.top/static/tvlogo/HBOHD.png", + "HBOHITS": "https://www.mxdyeah.top/static/tvlogo/HBOHITS.png", + "HBOMAX": "https://www.mxdyeah.top/static/tvlogo/HBOMAX.png", + "HBOPLUS": "https://www.mxdyeah.top/static/tvlogo/HBOPLUS.png", + "HBOSIGNATURE": "https://www.mxdyeah.top/static/tvlogo/HBOSIGNATURE.png", + "HBOZONE": "https://www.mxdyeah.top/static/tvlogo/HBOZONE.png", + "HBOZONEHD": "https://www.mxdyeah.top/static/tvlogo/HBOZONEHD.png", + "HBO原创巨献": "https://www.mxdyeah.top/static/tvlogo/HBO原创巨献.png", + "HBO原创钜献": "https://www.mxdyeah.top/static/tvlogo/HBO原创钜献.png", + "HBO家庭": "https://www.mxdyeah.top/static/tvlogo/HBO家庭.png", + "HBO强档巨献": "https://www.mxdyeah.top/static/tvlogo/HBO强档巨献.png", + "HBO强档钜献": "https://www.mxdyeah.top/static/tvlogo/HBO强档钜献.png", + "HBO温馨家庭": "https://www.mxdyeah.top/static/tvlogo/HBO温馨家庭.png", + "HDTV": "https://www.mxdyeah.top/static/tvlogo/HDTV.png", + "HDZHTV": "https://www.mxdyeah.top/static/tvlogo/HDZHTV.png", + "HEBEI": "https://www.mxdyeah.top/static/tvlogo/HEBEI.png", + "HEILONGJIANG": "https://www.mxdyeah.top/static/tvlogo/HEILONGJIANG.png", + "HENAN": "https://www.mxdyeah.top/static/tvlogo/HENAN.png", + "HGTV": "https://www.mxdyeah.top/static/tvlogo/HGTV.png", + "HGTV居家乐活": "https://www.mxdyeah.top/static/tvlogo/HGTV居家乐活.png", + "HISTORY": "https://www.mxdyeah.top/static/tvlogo/HISTORY.png", + "HISTORY2": "https://www.mxdyeah.top/static/tvlogo/HISTORY2.png", + "HISTORYCHANNEL": "https://www.mxdyeah.top/static/tvlogo/HISTORYCHANNEL.png", + "HISTORY历史": "https://www.mxdyeah.top/static/tvlogo/HISTORY历史.png", + "HITS": "https://www.mxdyeah.top/static/tvlogo/HITS.png", + "HKC603": "https://www.mxdyeah.top/static/tvlogo/HKC603.png", + "HKCHD603": "https://www.mxdyeah.top/static/tvlogo/HKCHD603.png", + "HKCSPORTPLUS": "https://www.mxdyeah.top/static/tvlogo/HKCSPORTPLUS.png", + "HKC体育": "https://www.mxdyeah.top/static/tvlogo/HKC体育.png", + "HKC体育2": "https://www.mxdyeah.top/static/tvlogo/HKC体育2.png", + "HKC剧集": "https://www.mxdyeah.top/static/tvlogo/HKC剧集.png", + "HKC娱乐": "https://www.mxdyeah.top/static/tvlogo/HKC娱乐.png", + "HKC新闻": "https://www.mxdyeah.top/static/tvlogo/HKC新闻.png", + "HKC球彩": "https://www.mxdyeah.top/static/tvlogo/HKC球彩.png", + "HKC直播新闻": "https://www.mxdyeah.top/static/tvlogo/HKC直播新闻.png", + "HKC经典电影": "https://www.mxdyeah.top/static/tvlogo/HKC经典电影.png", + "HKC财经资讯": "https://www.mxdyeah.top/static/tvlogo/HKC财经资讯.png", + "HKC赔率": "https://www.mxdyeah.top/static/tvlogo/HKC赔率.png", + "HKGUOJICAIJING": "https://www.mxdyeah.top/static/tvlogo/HKGUOJICAIJING.png", + "HKS": "https://www.mxdyeah.top/static/tvlogo/HKS.png", + "HLN": "https://www.mxdyeah.top/static/tvlogo/HLN.png", + "HMC": "https://www.mxdyeah.top/static/tvlogo/HMC.png", + "HONGKONG603": "https://www.mxdyeah.top/static/tvlogo/HONGKONG603.png", + "HONGKONGKAI": "https://www.mxdyeah.top/static/tvlogo/HONGKONGKAI.png", + "HOT": "https://www.mxdyeah.top/static/tvlogo/HOT.png", + "HOY1": "https://www.mxdyeah.top/static/tvlogo/HOY1.png", + "HOYTV": "https://www.mxdyeah.top/static/tvlogo/HOYTV.png", + "HOYTV资讯": "https://www.mxdyeah.top/static/tvlogo/HOYTV资讯.png", + "HOY国际财经": "https://www.mxdyeah.top/static/tvlogo/HOY国际财经.png", + "HTV6移动": "https://www.mxdyeah.top/static/tvlogo/HTV6移动.png", + "HUANGHE": "https://www.mxdyeah.top/static/tvlogo/HUANGHE.png", + "HUANXIAO": "https://www.mxdyeah.top/static/tvlogo/HUANXIAO.png", + "HUANYUCAIJING": "https://www.mxdyeah.top/static/tvlogo/HUANYUCAIJING.png", + "HUANYUZONGHE": "https://www.mxdyeah.top/static/tvlogo/HUANYUZONGHE.png", + "HUAYIMBC": "https://www.mxdyeah.top/static/tvlogo/HUAYIMBC.png", + "HUAYIYINGJU": "https://www.mxdyeah.top/static/tvlogo/HUAYIYINGJU.png", + "HUBEI": "https://www.mxdyeah.top/static/tvlogo/HUBEI.png", + "HUBEI2": "https://www.mxdyeah.top/static/tvlogo/HUBEI2.png", + "HUBEI3": "https://www.mxdyeah.top/static/tvlogo/HUBEI3.png", + "HUBEI4": "https://www.mxdyeah.top/static/tvlogo/HUBEI4.png", + "HUBEI5": "https://www.mxdyeah.top/static/tvlogo/HUBEI5.png", + "HUBEI7": "https://www.mxdyeah.top/static/tvlogo/HUBEI7.png", + "HUBEI8": "https://www.mxdyeah.top/static/tvlogo/HUBEI8.png", + "HUNAN": "https://www.mxdyeah.top/static/tvlogo/HUNAN.png", + "HWAZANTV": "https://www.mxdyeah.top/static/tvlogo/HWAZANTV.png", + "HYTV": "https://www.mxdyeah.top/static/tvlogo/HYTV.png", + "ICS外语": "https://www.mxdyeah.top/static/tvlogo/ICS外语.png", + "IFC": "https://www.mxdyeah.top/static/tvlogo/IFC.png", + "IFUN": "https://www.mxdyeah.top/static/tvlogo/IFUN.png", + "IFUN1": "https://www.mxdyeah.top/static/tvlogo/IFUN1.png", + "IFUN2": "https://www.mxdyeah.top/static/tvlogo/IFUN2.png", + "IFUN3": "https://www.mxdyeah.top/static/tvlogo/IFUN3.png", + "IFUN儿童": "https://www.mxdyeah.top/static/tvlogo/IFUN儿童.png", + "IFUN动漫": "https://www.mxdyeah.top/static/tvlogo/IFUN动漫.png", + "IHOT爱世界": "https://www.mxdyeah.top/static/tvlogo/IHOT爱世界.png", + "IHOT爱体育": "https://www.mxdyeah.top/static/tvlogo/IHOT爱体育.png", + "IHOT爱动漫": "https://www.mxdyeah.top/static/tvlogo/IHOT爱动漫.png", + "IHOT爱历史": "https://www.mxdyeah.top/static/tvlogo/IHOT爱历史.png", + "IHOT爱喜剧": "https://www.mxdyeah.top/static/tvlogo/IHOT爱喜剧.png", + "IHOT爱奇谈": "https://www.mxdyeah.top/static/tvlogo/IHOT爱奇谈.png", + "IHOT爱娱乐": "https://www.mxdyeah.top/static/tvlogo/IHOT爱娱乐.png", + "IHOT爱家庭": "https://www.mxdyeah.top/static/tvlogo/IHOT爱家庭.png", + "IHOT爱幼教": "https://www.mxdyeah.top/static/tvlogo/IHOT爱幼教.png", + "IHOT爱怀旧": "https://www.mxdyeah.top/static/tvlogo/IHOT爱怀旧.png", + "IHOT爱悬疑": "https://www.mxdyeah.top/static/tvlogo/IHOT爱悬疑.png", + "IHOT爱探索": "https://www.mxdyeah.top/static/tvlogo/IHOT爱探索.png", + "IHOT爱旅行": "https://www.mxdyeah.top/static/tvlogo/IHOT爱旅行.png", + "IHOT爱时尚": "https://www.mxdyeah.top/static/tvlogo/IHOT爱时尚.png", + "IHOT爱极限": "https://www.mxdyeah.top/static/tvlogo/IHOT爱极限.png", + "IHOT爱江湖": "https://www.mxdyeah.top/static/tvlogo/IHOT爱江湖.png", + "IHOT爱浪漫": "https://www.mxdyeah.top/static/tvlogo/IHOT爱浪漫.png", + "IHOT爱猎奇": "https://www.mxdyeah.top/static/tvlogo/IHOT爱猎奇.png", + "IHOT爱玩具": "https://www.mxdyeah.top/static/tvlogo/IHOT爱玩具.png", + "IHOT爱电竞": "https://www.mxdyeah.top/static/tvlogo/IHOT爱电竞.png", + "IHOT爱科学": "https://www.mxdyeah.top/static/tvlogo/IHOT爱科学.png", + "IHOT爱科幻": "https://www.mxdyeah.top/static/tvlogo/IHOT爱科幻.png", + "IHOT爱经典": "https://www.mxdyeah.top/static/tvlogo/IHOT爱经典.png", + "IHOT爱美食": "https://www.mxdyeah.top/static/tvlogo/IHOT爱美食.png", + "IHOT爱解密": "https://www.mxdyeah.top/static/tvlogo/IHOT爱解密.png", + "IHOT爱谍战": "https://www.mxdyeah.top/static/tvlogo/IHOT爱谍战.png", + "IHOT爱赛车": "https://www.mxdyeah.top/static/tvlogo/IHOT爱赛车.png", + "IHOT爱都市": "https://www.mxdyeah.top/static/tvlogo/IHOT爱都市.png", + "IHOT爱院线": "https://www.mxdyeah.top/static/tvlogo/IHOT爱院线.png", + "IHOT爱青春": "https://www.mxdyeah.top/static/tvlogo/IHOT爱青春.png", + "IMODETV时尚": "https://www.mxdyeah.top/static/tvlogo/IMODETV时尚.png", + "INEWS": "https://www.mxdyeah.top/static/tvlogo/INEWS.png", + "INULTRA": "https://www.mxdyeah.top/static/tvlogo/INULTRA.png", + "INVESTIGATIONDISCOVERY": "https://www.mxdyeah.top/static/tvlogo/INVESTIGATIONDISCOVERY.png", + "IONTELEVISIONEASTHD": "https://www.mxdyeah.top/static/tvlogo/IONTELEVISIONEASTHD.png", + "IPTV3+": "https://www.mxdyeah.top/static/tvlogo/IPTV3+.png", + "IPTV4K": "https://www.mxdyeah.top/static/tvlogo/IPTV4K.png", + "IPTV5+": "https://www.mxdyeah.top/static/tvlogo/IPTV5+.png", + "IPTV6+": "https://www.mxdyeah.top/static/tvlogo/IPTV6+.png", + "IPTV8+": "https://www.mxdyeah.top/static/tvlogo/IPTV8+.png", + "IPTV@大健康": "https://www.mxdyeah.top/static/tvlogo/IPTV@大健康.png", + "IPTVEFEL": "https://www.mxdyeah.top/static/tvlogo/IPTVEFEL.png", + "IPTVINSIGHT": "https://www.mxdyeah.top/static/tvlogo/IPTVINSIGHT.png", + "IPTVTECHNO": "https://www.mxdyeah.top/static/tvlogo/IPTVTECHNO.png", + "IPTV军旅剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV军旅剧场.png", + "IPTV古装剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV古装剧场.png", + "IPTV家庭剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV家庭剧场.png", + "IPTV少儿动画": "https://www.mxdyeah.top/static/tvlogo/IPTV少儿动画.png", + "IPTV怀旧剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV怀旧剧场.png", + "IPTV抗战剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV抗战剧场.png", + "IPTV法治": "https://www.mxdyeah.top/static/tvlogo/IPTV法治.png", + "IPTV淘BABY": "https://www.mxdyeah.top/static/tvlogo/IPTV淘BABY.png", + "IPTV淘剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV淘剧场.png", + "IPTV淘娱乐": "https://www.mxdyeah.top/static/tvlogo/IPTV淘娱乐.png", + "IPTV淘电影": "https://www.mxdyeah.top/static/tvlogo/IPTV淘电影.png", + "IPTV淘精彩": "https://www.mxdyeah.top/static/tvlogo/IPTV淘精彩.png", + "IPTV热播剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV热播剧场.png", + "IPTV电影": "https://www.mxdyeah.top/static/tvlogo/IPTV电影.png", + "IPTV相声小品": "https://www.mxdyeah.top/static/tvlogo/IPTV相声小品.png", + "IPTV经典剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV经典剧场.png", + "IPTV经典电影": "https://www.mxdyeah.top/static/tvlogo/IPTV经典电影.png", + "IPTV萌宠TV": "https://www.mxdyeah.top/static/tvlogo/IPTV萌宠TV.png", + "IPTV谍战剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV谍战剧场.png", + "IPTV足球": "https://www.mxdyeah.top/static/tvlogo/IPTV足球.png", + "IPTV通用": "https://www.mxdyeah.top/static/tvlogo/IPTV通用.png", + "IPTV都市剧场": "https://www.mxdyeah.top/static/tvlogo/IPTV都市剧场.png", + "IPTV野外": "https://www.mxdyeah.top/static/tvlogo/IPTV野外.png", + "IPTV高清院线": "https://www.mxdyeah.top/static/tvlogo/IPTV高清院线.png", + "IPTV魅力时尚": "https://www.mxdyeah.top/static/tvlogo/IPTV魅力时尚.png", + "ITV": "https://www.mxdyeah.top/static/tvlogo/ITV.png", + "ITV1": "https://www.mxdyeah.top/static/tvlogo/ITV1.png", + "ITV2": "https://www.mxdyeah.top/static/tvlogo/ITV2.png", + "ITV3": "https://www.mxdyeah.top/static/tvlogo/ITV3.png", + "ITV4": "https://www.mxdyeah.top/static/tvlogo/ITV4.png", + "J&TSTATION": "https://www.mxdyeah.top/static/tvlogo/J&TSTATION.png", + "J2": "https://www.mxdyeah.top/static/tvlogo/J2.png", + "JAPANEWS24": "https://www.mxdyeah.top/static/tvlogo/JAPANEWS24.png", + "JCYS": "https://www.mxdyeah.top/static/tvlogo/JCYS.png", + "JETVARIETY": "https://www.mxdyeah.top/static/tvlogo/JETVARIETY.png", + "JET综合": "https://www.mxdyeah.top/static/tvlogo/JET综合.png", + "JIAJIAKT": "https://www.mxdyeah.top/static/tvlogo/JIAJIAKT.png", + "JIANGSU": "https://www.mxdyeah.top/static/tvlogo/JIANGSU.png", + "JIANGXI": "https://www.mxdyeah.top/static/tvlogo/JIANGXI.png", + "JILIN": "https://www.mxdyeah.top/static/tvlogo/JILIN.png", + "JINWENJIANG": "https://www.mxdyeah.top/static/tvlogo/JINWENJIANG.png", + "JINYINGJISHI": "https://www.mxdyeah.top/static/tvlogo/JINYINGJISHI.png", + "JINYINGKATONG": "https://www.mxdyeah.top/static/tvlogo/JINYINGKATONG.png", + "JISUQICHE": "https://www.mxdyeah.top/static/tvlogo/JISUQICHE.png", + "JMTV": "https://www.mxdyeah.top/static/tvlogo/JMTV.png", + "JNDSTV": "https://www.mxdyeah.top/static/tvlogo/JNDSTV.png", + "JNETV": "https://www.mxdyeah.top/static/tvlogo/JNETV.png", + "JNJYTV": "https://www.mxdyeah.top/static/tvlogo/JNJYTV.png", + "JNSETV": "https://www.mxdyeah.top/static/tvlogo/JNSETV.png", + "JNSHTV": "https://www.mxdyeah.top/static/tvlogo/JNSHTV.png", + "JNTV": "https://www.mxdyeah.top/static/tvlogo/JNTV.png", + "JNWLTY": "https://www.mxdyeah.top/static/tvlogo/JNWLTY.png", + "JNYETV": "https://www.mxdyeah.top/static/tvlogo/JNYETV.png", + "JNYLTV": "https://www.mxdyeah.top/static/tvlogo/JNYLTV.png", + "JZTV": "https://www.mxdyeah.top/static/tvlogo/JZTV.png", + "J亚洲电影": "https://www.mxdyeah.top/static/tvlogo/J亚洲电影.png", + "J劲爆电影": "https://www.mxdyeah.top/static/tvlogo/J劲爆电影.png", + "J喜剧电影": "https://www.mxdyeah.top/static/tvlogo/J喜剧电影.png", + "J大众影视": "https://www.mxdyeah.top/static/tvlogo/J大众影视.png", + "J怀旧电影": "https://www.mxdyeah.top/static/tvlogo/J怀旧电影.png", + "KAIDIANSHI": "https://www.mxdyeah.top/static/tvlogo/KAIDIANSHI.png", + "KAKU": "https://www.mxdyeah.top/static/tvlogo/KAKU.png", + "KANGBA": "https://www.mxdyeah.top/static/tvlogo/KANGBA.png", + "KIX": "https://www.mxdyeah.top/static/tvlogo/KIX.png", + "KMTV": "https://www.mxdyeah.top/static/tvlogo/KMTV.png", + "LALIGATVHD": "https://www.mxdyeah.top/static/tvlogo/LALIGATVHD.png", + "LFCTV": "https://www.mxdyeah.top/static/tvlogo/LFCTV.png", + "LIAONING": "https://www.mxdyeah.top/static/tvlogo/LIAONING.png", + "LIFETIME": "https://www.mxdyeah.top/static/tvlogo/LIFETIME.png", + "LIFETIMEMOVIES": "https://www.mxdyeah.top/static/tvlogo/LIFETIMEMOVIES.png", + "LIFETIME娱乐": "https://www.mxdyeah.top/static/tvlogo/LIFETIME娱乐.png", + "LIVEABC互动英语": "https://www.mxdyeah.top/static/tvlogo/LIVEABC互动英语.png", + "LNSY1": "https://www.mxdyeah.top/static/tvlogo/LNSY1.png", + "LNTV2": "https://www.mxdyeah.top/static/tvlogo/LNTV2.png", + "LNTV3": "https://www.mxdyeah.top/static/tvlogo/LNTV3.png", + "LNTV5": "https://www.mxdyeah.top/static/tvlogo/LNTV5.png", + "LNTV6": "https://www.mxdyeah.top/static/tvlogo/LNTV6.png", + "LNTV7": "https://www.mxdyeah.top/static/tvlogo/LNTV7.png", + "LNTV8": "https://www.mxdyeah.top/static/tvlogo/LNTV8.png", + "LNTVFINANCE": "https://www.mxdyeah.top/static/tvlogo/LNTVFINANCE.png", + "LNTVSPORT": "https://www.mxdyeah.top/static/tvlogo/LNTVSPORT.png", + "LOGO": "https://www.mxdyeah.top/static/tvlogo/LOGO.png", + "LONGHUADONGHUA": "https://www.mxdyeah.top/static/tvlogo/LONGHUADONGHUA.png", + "LOOK": "https://www.mxdyeah.top/static/tvlogo/LOOK.png", + "LOUPE": "https://www.mxdyeah.top/static/tvlogo/LOUPE.png", + "LOVENARURE4K": "https://www.mxdyeah.top/static/tvlogo/LOVENARURE4K.png", + "LOVENATURE": "https://www.mxdyeah.top/static/tvlogo/LOVENATURE.png", + "LOVENATURE4K": "https://www.mxdyeah.top/static/tvlogo/LOVENATURE4K.png", + "LQTV": "https://www.mxdyeah.top/static/tvlogo/LQTV.png", + "LSTIME": "https://www.mxdyeah.top/static/tvlogo/LSTIME.png", + "LSTIME电影": "https://www.mxdyeah.top/static/tvlogo/LSTIME电影.png", + "LSTV": "https://www.mxdyeah.top/static/tvlogo/LSTV.png", + "LUXETV": "https://www.mxdyeah.top/static/tvlogo/LUXETV.png", + "LVYOU": "https://www.mxdyeah.top/static/tvlogo/LVYOU.png", + "LXTV": "https://www.mxdyeah.top/static/tvlogo/LXTV.png", + "LXZHTV": "https://www.mxdyeah.top/static/tvlogo/LXZHTV.png", + "MANDIJAPAN": "https://www.mxdyeah.top/static/tvlogo/MANDIJAPAN.png", + "MAX极速汽车": "https://www.mxdyeah.top/static/tvlogo/MAX极速汽车.png", + "MBC": "https://www.mxdyeah.top/static/tvlogo/MBC.png", + "MEILIZUQIU": "https://www.mxdyeah.top/static/tvlogo/MEILIZUQIU.png", + "MEIYAMOVIE": "https://www.mxdyeah.top/static/tvlogo/MEIYAMOVIE.png", + "MEZZO": "https://www.mxdyeah.top/static/tvlogo/MEZZO.png", + "MEZZOLIVE": "https://www.mxdyeah.top/static/tvlogo/MEZZOLIVE.png", + "MEZZOLIVEHD": "https://www.mxdyeah.top/static/tvlogo/MEZZOLIVEHD.png", + "MLBNETWORK": "https://www.mxdyeah.top/static/tvlogo/MLBNETWORK.png", + "MOMOKIDS": "https://www.mxdyeah.top/static/tvlogo/MOMOKIDS.png", + "MOMO亲子": "https://www.mxdyeah.top/static/tvlogo/MOMO亲子.png", + "MOMO综合": "https://www.mxdyeah.top/static/tvlogo/MOMO综合.png", + "MOMO追剧": "https://www.mxdyeah.top/static/tvlogo/MOMO追剧.png", + "MOREMAX": "https://www.mxdyeah.top/static/tvlogo/MOREMAX.png", + "MOTORTRENDHD": "https://www.mxdyeah.top/static/tvlogo/MOTORTRENDHD.png", + "MOVIE": "https://www.mxdyeah.top/static/tvlogo/MOVIE.png", + "MOVIEMAX": "https://www.mxdyeah.top/static/tvlogo/MOVIEMAX.png", + "MSNBC": "https://www.mxdyeah.top/static/tvlogo/MSNBC.png", + "MTV": "https://www.mxdyeah.top/static/tvlogo/MTV.png", + "MTVLIVE": "https://www.mxdyeah.top/static/tvlogo/MTVLIVE.png", + "MTVLIVEHD": "https://www.mxdyeah.top/static/tvlogo/MTVLIVEHD.png", + "MTVLIVEHD音乐": "https://www.mxdyeah.top/static/tvlogo/MTVLIVEHD音乐.png", + "MTV综合": "https://www.mxdyeah.top/static/tvlogo/MTV综合.png", + "MUTV": "https://www.mxdyeah.top/static/tvlogo/MUTV.png", + "MUZZIKZZ4000": "https://www.mxdyeah.top/static/tvlogo/MUZZIKZZ4000.png", + "MY101": "https://www.mxdyeah.top/static/tvlogo/MY101.png", + "MY101综合": "https://www.mxdyeah.top/static/tvlogo/MY101综合.png", + "MYCINEMAEUROPE": "https://www.mxdyeah.top/static/tvlogo/MYCINEMAEUROPE.png", + "MYCINEMAEUROPEHD我的欧洲电影": "https://www.mxdyeah.top/static/tvlogo/MYCINEMAEUROPEHD我的欧洲电影.png", + "MYKIDS": "https://www.mxdyeah.top/static/tvlogo/MYKIDS.png", + "MYTV28AI": "https://www.mxdyeah.top/static/tvlogo/MYTV28AI.png", + "MYTVSUPER": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPER.png", + "MYTVSUPER18": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPER18.png", + "MYTVSUPERFOOTBALL3": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPERFOOTBALL3.png", + "MYTVSUPERFOOTBALL4": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPERFOOTBALL4.png", + "MYTVSUPERFOOTBALL5": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPERFOOTBALL5.png", + "MYTVSUPERFOOTBALL6": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPERFOOTBALL6.png", + "MYTVSUPEROLYMPICS801": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS801.png", + "MYTVSUPEROLYMPICS802": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS802.png", + "MYTVSUPEROLYMPICS803": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS803.png", + "MYTVSUPEROLYMPICS804": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS804.png", + "MYTVSUPEROLYMPICS805": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS805.png", + "MYTVSUPEROLYMPICS806": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS806.png", + "MYTVSUPEROLYMPICS807": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS807.png", + "MYTVSUPEROLYMPICS808": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS808.png", + "MYTVSUPEROLYMPICS809": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS809.png", + "MYTVSUPEROLYMPICS810": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS810.png", + "MYTVSUPEROLYMPICS811": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS811.png", + "MYTVSUPEROLYMPICS812": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS812.png", + "MYTVSUPEROLYMPICS813": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS813.png", + "MYTVSUPEROLYMPICS814": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS814.png", + "MYTVSUPEROLYMPICS815": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS815.png", + "MYTVSUPEROLYMPICS816": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICS816.png", + "MYTVSUPEROLYMPICSNEWS": "https://www.mxdyeah.top/static/tvlogo/MYTVSUPEROLYMPICSNEWS.png", + "Mnews": "https://www.mxdyeah.top/static/tvlogo/Mnews.png", + "NA2BEINSPORTS": "https://www.mxdyeah.top/static/tvlogo/NA2BEINSPORTS.png", + "NA2BEINSPORTS01": "https://www.mxdyeah.top/static/tvlogo/NA2BEINSPORTS01.png", + "NA2BEINSPORTS02": "https://www.mxdyeah.top/static/tvlogo/NA2BEINSPORTS02.png", + "NA2BEINSPORTS03": "https://www.mxdyeah.top/static/tvlogo/NA2BEINSPORTS03.png", + "NANFANG": "https://www.mxdyeah.top/static/tvlogo/NANFANG.png", + "NATGEO": "https://www.mxdyeah.top/static/tvlogo/NATGEO.png", + "NATGEOWILD": "https://www.mxdyeah.top/static/tvlogo/NATGEOWILD.png", + "NATIONALGEOGRAPHIC": "https://www.mxdyeah.top/static/tvlogo/NATIONALGEOGRAPHIC.png", + "NATIONALGEOGRAPHICWILD": "https://www.mxdyeah.top/static/tvlogo/NATIONALGEOGRAPHICWILD.png", + "NATLGEO": "https://www.mxdyeah.top/static/tvlogo/NATLGEO.png", + "NBATV": "https://www.mxdyeah.top/static/tvlogo/NBATV.png", + "NEWTV东北热剧": "https://www.mxdyeah.top/static/tvlogo/NEWTV东北热剧.png", + "NEWTV中国功夫": "https://www.mxdyeah.top/static/tvlogo/NEWTV中国功夫.png", + "NEWTV军事评论": "https://www.mxdyeah.top/static/tvlogo/NEWTV军事评论.png", + "NEWTV军旅剧场": "https://www.mxdyeah.top/static/tvlogo/NEWTV军旅剧场.png", + "NEWTV农业致富": "https://www.mxdyeah.top/static/tvlogo/NEWTV农业致富.png", + "NEWTV动作电影": "https://www.mxdyeah.top/static/tvlogo/NEWTV动作电影.png", + "NEWTV古装剧场": "https://www.mxdyeah.top/static/tvlogo/NEWTV古装剧场.png", + "NEWTV哒啵电竞": "https://www.mxdyeah.top/static/tvlogo/NEWTV哒啵电竞.png", + "NEWTV哒啵赛事": "https://www.mxdyeah.top/static/tvlogo/NEWTV哒啵赛事.png", + "NEWTV家庭剧场": "https://www.mxdyeah.top/static/tvlogo/NEWTV家庭剧场.png", + "NEWTV怡伴健康": "https://www.mxdyeah.top/static/tvlogo/NEWTV怡伴健康.png", + "NEWTV惊悚悬疑": "https://www.mxdyeah.top/static/tvlogo/NEWTV惊悚悬疑.png", + "NEWTV明星大片": "https://www.mxdyeah.top/static/tvlogo/NEWTV明星大片.png", + "NEWTV欢乐剧场": "https://www.mxdyeah.top/static/tvlogo/NEWTV欢乐剧场.png", + "NEWTV武博世界": "https://www.mxdyeah.top/static/tvlogo/NEWTV武博世界.png", + "NEWTV武搏世界": "https://www.mxdyeah.top/static/tvlogo/NEWTV武搏世界.png", + "NEWTV海外剧场": "https://www.mxdyeah.top/static/tvlogo/NEWTV海外剧场.png", + "NEWTV潮妈辣婆": "https://www.mxdyeah.top/static/tvlogo/NEWTV潮妈辣婆.png", + "NEWTV炫舞未来": "https://www.mxdyeah.top/static/tvlogo/NEWTV炫舞未来.png", + "NEWTV爱情喜剧": "https://www.mxdyeah.top/static/tvlogo/NEWTV爱情喜剧.png", + "NEWTV精品体育": "https://www.mxdyeah.top/static/tvlogo/NEWTV精品体育.png", + "NEWTV精品大剧": "https://www.mxdyeah.top/static/tvlogo/NEWTV精品大剧.png", + "NEWTV精品纪录": "https://www.mxdyeah.top/static/tvlogo/NEWTV精品纪录.png", + "NEWTV精品综合": "https://www.mxdyeah.top/static/tvlogo/NEWTV精品综合.png", + "NEWTV精品萌宠": "https://www.mxdyeah.top/static/tvlogo/NEWTV精品萌宠.png", + "NEWTV超级体育": "https://www.mxdyeah.top/static/tvlogo/NEWTV超级体育.png", + "NEWTV超级电影": "https://www.mxdyeah.top/static/tvlogo/NEWTV超级电影.png", + "NEWTV超级电视剧": "https://www.mxdyeah.top/static/tvlogo/NEWTV超级电视剧.png", + "NEWTV超级综艺": "https://www.mxdyeah.top/static/tvlogo/NEWTV超级综艺.png", + "NEWTV金牌综艺": "https://www.mxdyeah.top/static/tvlogo/NEWTV金牌综艺.png", + "NEWTV魅力云南": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力云南.png", + "NEWTV魅力吉林": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力吉林.png", + "NEWTV魅力四川": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力四川.png", + "NEWTV魅力山东": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力山东.png", + "NEWTV魅力广东": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力广东.png", + "NEWTV魅力广西": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力广西.png", + "NEWTV魅力江西": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力江西.png", + "NEWTV魅力潇湘": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力潇湘.png", + "NEWTV魅力黑龙江": "https://www.mxdyeah.top/static/tvlogo/NEWTV魅力黑龙江.png", + "NEWTV黑莓动画": "https://www.mxdyeah.top/static/tvlogo/NEWTV黑莓动画.png", + "NEWTV黑莓电影": "https://www.mxdyeah.top/static/tvlogo/NEWTV黑莓电影.png", + "NEXTTVMOVIE": "https://www.mxdyeah.top/static/tvlogo/NEXTTVMOVIE.png", + "NEXTTVNEWS": "https://www.mxdyeah.top/static/tvlogo/NEXTTVNEWS.png", + "NEXTTVZONGHE": "https://www.mxdyeah.top/static/tvlogo/NEXTTVZONGHE.png", + "NFLNETWORK": "https://www.mxdyeah.top/static/tvlogo/NFLNETWORK.png", + "NFLREDZONE": "https://www.mxdyeah.top/static/tvlogo/NFLREDZONE.png", + "NHK": "https://www.mxdyeah.top/static/tvlogo/NHK.png", + "NHKWORLD": "https://www.mxdyeah.top/static/tvlogo/NHKWORLD.png", + "NHKWORLDP": "https://www.mxdyeah.top/static/tvlogo/NHKWORLDP.png", + "NHKWORLDPREMIUM": "https://www.mxdyeah.top/static/tvlogo/NHKWORLDPREMIUM.png", + "NHLNETWORK": "https://www.mxdyeah.top/static/tvlogo/NHLNETWORK.png", + "NICK": "https://www.mxdyeah.top/static/tvlogo/NICK.png", + "NICKELODEON": "https://www.mxdyeah.top/static/tvlogo/NICKELODEON.png", + "NICKELODEONEAST": "https://www.mxdyeah.top/static/tvlogo/NICKELODEONEAST.png", + "NICKJR.": "https://www.mxdyeah.top/static/tvlogo/NICKJR..png", + "NICKJR": "https://www.mxdyeah.top/static/tvlogo/NICKJR.png", + "NICKTOONS": "https://www.mxdyeah.top/static/tvlogo/NICKTOONS.png", + "NICK卡通": "https://www.mxdyeah.top/static/tvlogo/NICK卡通.png", + "NINGXIA": "https://www.mxdyeah.top/static/tvlogo/NINGXIA.png", + "NOW剧集": "https://www.mxdyeah.top/static/tvlogo/NOW剧集.png", + "NOW华剧": "https://www.mxdyeah.top/static/tvlogo/NOW华剧.png", + "NOW新闻": "https://www.mxdyeah.top/static/tvlogo/NOW新闻.png", + "NOW爆谷": "https://www.mxdyeah.top/static/tvlogo/NOW爆谷.png", + "NOW直播": "https://www.mxdyeah.top/static/tvlogo/NOW直播.png", + "NOW财经": "https://www.mxdyeah.top/static/tvlogo/NOW财经.png", + "NOW跑马": "https://www.mxdyeah.top/static/tvlogo/NOW跑马.png", + "OUTDOOR": "https://www.mxdyeah.top/static/tvlogo/OUTDOOR.png", + "OUTDOORCHANNEL": "https://www.mxdyeah.top/static/tvlogo/OUTDOORCHANNEL.png", + "OWN": "https://www.mxdyeah.top/static/tvlogo/OWN.png", + "OXYGENTRUECRIME": "https://www.mxdyeah.top/static/tvlogo/OXYGENTRUECRIME.png", + "PDTV": "https://www.mxdyeah.top/static/tvlogo/PDTV.png", + "PETCLUBTV": "https://www.mxdyeah.top/static/tvlogo/PETCLUBTV.png", + "PILIPUPPET": "https://www.mxdyeah.top/static/tvlogo/PILIPUPPET.png", + "POPC": "https://www.mxdyeah.top/static/tvlogo/POPC.png", + "PREMIERSPORTS1": "https://www.mxdyeah.top/static/tvlogo/PREMIERSPORTS1.png", + "PREMIERSPORTS2": "https://www.mxdyeah.top/static/tvlogo/PREMIERSPORTS2.png", + "PUBLICTV": "https://www.mxdyeah.top/static/tvlogo/PUBLICTV.png", + "PUBLICTV2": "https://www.mxdyeah.top/static/tvlogo/PUBLICTV2.png", + "PUBLICTV3HD": "https://www.mxdyeah.top/static/tvlogo/PUBLICTV3HD.png", + "QICAIXIJU": "https://www.mxdyeah.top/static/tvlogo/QICAIXIJU.png", + "QINGHAI": "https://www.mxdyeah.top/static/tvlogo/QINGHAI.png", + "QTV": "https://www.mxdyeah.top/static/tvlogo/QTV.png", + "QTV1": "https://www.mxdyeah.top/static/tvlogo/QTV1.png", + "QTV2": "https://www.mxdyeah.top/static/tvlogo/QTV2.png", + "QTV3": "https://www.mxdyeah.top/static/tvlogo/QTV3.png", + "QTV4": "https://www.mxdyeah.top/static/tvlogo/QTV4.png", + "QTV5": "https://www.mxdyeah.top/static/tvlogo/QTV5.png", + "QTV6": "https://www.mxdyeah.top/static/tvlogo/QTV6.png", + "QUANJISHI": "https://www.mxdyeah.top/static/tvlogo/QUANJISHI.png", + "QZTV": "https://www.mxdyeah.top/static/tvlogo/QZTV.png", + "QZTV1": "https://www.mxdyeah.top/static/tvlogo/QZTV1.png", + "QZTV2": "https://www.mxdyeah.top/static/tvlogo/QZTV2.png", + "QZTV3": "https://www.mxdyeah.top/static/tvlogo/QZTV3.png", + "QZTV4": "https://www.mxdyeah.top/static/tvlogo/QZTV4.png", + "REELZCHANNEL": "https://www.mxdyeah.top/static/tvlogo/REELZCHANNEL.png", + "RHK31": "https://www.mxdyeah.top/static/tvlogo/RHK31.png", + "RHK32": "https://www.mxdyeah.top/static/tvlogo/RHK32.png", + "ROCKACTION": "https://www.mxdyeah.top/static/tvlogo/ROCKACTION.png", + "ROCKENTERTAINMENT": "https://www.mxdyeah.top/static/tvlogo/ROCKENTERTAINMENT.png", + "ROCKEXTREME": "https://www.mxdyeah.top/static/tvlogo/ROCKEXTREME.png", + "ROCK综艺娱乐": "https://www.mxdyeah.top/static/tvlogo/ROCK综艺娱乐.png", + "ROLLER": "https://www.mxdyeah.top/static/tvlogo/ROLLER.png", + "ROLLOR": "https://www.mxdyeah.top/static/tvlogo/ROLLOR.png", + "RTDOC": "https://www.mxdyeah.top/static/tvlogo/RTDOC.png", + "RTHK31": "https://www.mxdyeah.top/static/tvlogo/RTHK31.png", + "RTHK32": "https://www.mxdyeah.top/static/tvlogo/RTHK32.png", + "RTHK33": "https://www.mxdyeah.top/static/tvlogo/RTHK33.png", + "RTHK34": "https://www.mxdyeah.top/static/tvlogo/RTHK34.png", + "RTHK35": "https://www.mxdyeah.top/static/tvlogo/RTHK35.png", + "RTNEWS": "https://www.mxdyeah.top/static/tvlogo/RTNEWS.png", + "SANSHA": "https://www.mxdyeah.top/static/tvlogo/SANSHA.png", + "SBN": "https://www.mxdyeah.top/static/tvlogo/SBN.png", + "SBN全球财经": "https://www.mxdyeah.top/static/tvlogo/SBN全球财经.png", + "SCIENCE": "https://www.mxdyeah.top/static/tvlogo/SCIENCE.png", + "SCN四川广电网络": "https://www.mxdyeah.top/static/tvlogo/SCN四川广电网络.png", + "SCTV2": "https://www.mxdyeah.top/static/tvlogo/SCTV2.png", + "SCTV3": "https://www.mxdyeah.top/static/tvlogo/SCTV3.png", + "SCTV4": "https://www.mxdyeah.top/static/tvlogo/SCTV4.png", + "SCTV5": "https://www.mxdyeah.top/static/tvlogo/SCTV5.png", + "SCTV7": "https://www.mxdyeah.top/static/tvlogo/SCTV7.png", + "SCTV8": "https://www.mxdyeah.top/static/tvlogo/SCTV8.png", + "SCTV9": "https://www.mxdyeah.top/static/tvlogo/SCTV9.png", + "SDGONGGONG": "https://www.mxdyeah.top/static/tvlogo/SDGONGGONG.png", + "SDNONGKE": "https://www.mxdyeah.top/static/tvlogo/SDNONGKE.png", + "SDQILU": "https://www.mxdyeah.top/static/tvlogo/SDQILU.png", + "SDSHAOER": "https://www.mxdyeah.top/static/tvlogo/SDSHAOER.png", + "SDSHENGHUO": "https://www.mxdyeah.top/static/tvlogo/SDSHENGHUO.png", + "SDTIYU": "https://www.mxdyeah.top/static/tvlogo/SDTIYU.png", + "SDYINGSHI": "https://www.mxdyeah.top/static/tvlogo/SDYINGSHI.png", + "SDZONGYI": "https://www.mxdyeah.top/static/tvlogo/SDZONGYI.png", + "SETCITY": "https://www.mxdyeah.top/static/tvlogo/SETCITY.png", + "SETINEWS": "https://www.mxdyeah.top/static/tvlogo/SETINEWS.png", + "SETNEWS": "https://www.mxdyeah.top/static/tvlogo/SETNEWS.png", + "SETTAIWAN": "https://www.mxdyeah.top/static/tvlogo/SETTAIWAN.png", + "SETXIJU": "https://www.mxdyeah.top/static/tvlogo/SETXIJU.png", + "SETZONGHE": "https://www.mxdyeah.top/static/tvlogo/SETZONGHE.png", + "SGSCTV": "https://www.mxdyeah.top/static/tvlogo/SGSCTV.png", + "SGTV": "https://www.mxdyeah.top/static/tvlogo/SGTV.png", + "SHANDONG": "https://www.mxdyeah.top/static/tvlogo/SHANDONG.png", + "SHANGHAIDONGFANGYINGSHI": "https://www.mxdyeah.top/static/tvlogo/SHANGHAIDONGFANGYINGSHI.png", + "SHANGHAIJISHI": "https://www.mxdyeah.top/static/tvlogo/SHANGHAIJISHI.png", + "SHANGHAIWAIYU": "https://www.mxdyeah.top/static/tvlogo/SHANGHAIWAIYU.png", + "SHANGSHIXINWEN": "https://www.mxdyeah.top/static/tvlogo/SHANGSHIXINWEN.png", + "SHANXI": "https://www.mxdyeah.top/static/tvlogo/SHANXI.png", + "SHENGHUOSHISHANG": "https://www.mxdyeah.top/static/tvlogo/SHENGHUOSHISHANG.png", + "SHENGMING": "https://www.mxdyeah.top/static/tvlogo/SHENGMING.png", + "SHENZHEN": "https://www.mxdyeah.top/static/tvlogo/SHENZHEN.png", + "SHOWTIME2": "https://www.mxdyeah.top/static/tvlogo/SHOWTIME2.png", + "SHOWTIMEEXTREME": "https://www.mxdyeah.top/static/tvlogo/SHOWTIMEEXTREME.png", + "SICHUAN": "https://www.mxdyeah.top/static/tvlogo/SICHUAN.png", + "SINDATV": "https://www.mxdyeah.top/static/tvlogo/SINDATV.png", + "SINJITVHD": "https://www.mxdyeah.top/static/tvlogo/SINJITVHD.png", + "SITV七彩戏剧": "https://www.mxdyeah.top/static/tvlogo/SITV七彩戏剧.png", + "SITV乐游": "https://www.mxdyeah.top/static/tvlogo/SITV乐游.png", + "SITV动漫秀场": "https://www.mxdyeah.top/static/tvlogo/SITV动漫秀场.png", + "SITV劲爆体育": "https://www.mxdyeah.top/static/tvlogo/SITV劲爆体育.png", + "SITV新视觉": "https://www.mxdyeah.top/static/tvlogo/SITV新视觉.png", + "SITV极速汽车": "https://www.mxdyeah.top/static/tvlogo/SITV极速汽车.png", + "SITV欢笑剧场": "https://www.mxdyeah.top/static/tvlogo/SITV欢笑剧场.png", + "SITV欢笑剧场4K": "https://www.mxdyeah.top/static/tvlogo/SITV欢笑剧场4K.png", + "SITV法治天地": "https://www.mxdyeah.top/static/tvlogo/SITV法治天地.png", + "SITV游戏风云": "https://www.mxdyeah.top/static/tvlogo/SITV游戏风云.png", + "SITV生活时尚": "https://www.mxdyeah.top/static/tvlogo/SITV生活时尚.png", + "SITV都市剧场": "https://www.mxdyeah.top/static/tvlogo/SITV都市剧场.png", + "SITV金色学堂": "https://www.mxdyeah.top/static/tvlogo/SITV金色学堂.png", + "SITV魅力足球": "https://www.mxdyeah.top/static/tvlogo/SITV魅力足球.png", + "SKYCINEMACOMEDY": "https://www.mxdyeah.top/static/tvlogo/SKYCINEMACOMEDY.png", + "SKYCINEMAFAMILY": "https://www.mxdyeah.top/static/tvlogo/SKYCINEMAFAMILY.png", + "SKYNETSPORTS1": "https://www.mxdyeah.top/static/tvlogo/SKYNETSPORTS1.png", + "SKYNETSPORTS2": "https://www.mxdyeah.top/static/tvlogo/SKYNETSPORTS2.png", + "SKYNEWS": "https://www.mxdyeah.top/static/tvlogo/SKYNEWS.png", + "SKYSPORTSACTION": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSACTION.png", + "SKYSPORTSARENA": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSARENA.png", + "SKYSPORTSCRICKET": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSCRICKET.png", + "SKYSPORTSF1": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSF1.png", + "SKYSPORTSFOOTBALL": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSFOOTBALL.png", + "SKYSPORTSGOLF": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSGOLF.png", + "SKYSPORTSMAINEVENT": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSMAINEVENT.png", + "SKYSPORTSMIX": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSMIX.png", + "SKYSPORTSNEWS": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSNEWS.png", + "SKYSPORTSPREMIERLEAGUE": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSPREMIERLEAGUE.png", + "SKYSPORTSRACING": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSRACING.png", + "SKYSPORTSTENNIS": "https://www.mxdyeah.top/static/tvlogo/SKYSPORTSTENNIS.png", + "SMART知识": "https://www.mxdyeah.top/static/tvlogo/SMART知识.png", + "SMITHSONIAN": "https://www.mxdyeah.top/static/tvlogo/SMITHSONIAN.png", + "SONY": "https://www.mxdyeah.top/static/tvlogo/SONY.png", + "SONYGEM": "https://www.mxdyeah.top/static/tvlogo/SONYGEM.png", + "SONYMAX": "https://www.mxdyeah.top/static/tvlogo/SONYMAX.png", + "SONYMIX": "https://www.mxdyeah.top/static/tvlogo/SONYMIX.png", + "SONYSAB": "https://www.mxdyeah.top/static/tvlogo/SONYSAB.png", + "SONY中文": "https://www.mxdyeah.top/static/tvlogo/SONY中文.png", + "SPORTGOLFPLUS": "https://www.mxdyeah.top/static/tvlogo/SPORTGOLFPLUS.png", + "SPORTSGOLFCH": "https://www.mxdyeah.top/static/tvlogo/SPORTSGOLFCH.png", + "SPORTSNET2": "https://www.mxdyeah.top/static/tvlogo/SPORTSNET2.png", + "SPORTSPORTSNET": "https://www.mxdyeah.top/static/tvlogo/SPORTSPORTSNET.png", + "SPORTTENNIS": "https://www.mxdyeah.top/static/tvlogo/SPORTTENNIS.png", + "SPORTTRENDSPORT": "https://www.mxdyeah.top/static/tvlogo/SPORTTRENDSPORT.png", + "SPORTUNLIMITED": "https://www.mxdyeah.top/static/tvlogo/SPORTUNLIMITED.png", + "SPORTUNLIMITED2": "https://www.mxdyeah.top/static/tvlogo/SPORTUNLIMITED2.png", + "STARCHINESEMOVIES": "https://www.mxdyeah.top/static/tvlogo/STARCHINESEMOVIES.png", + "STARMOV": "https://www.mxdyeah.top/static/tvlogo/STARMOV.png", + "STARMOVIES": "https://www.mxdyeah.top/static/tvlogo/STARMOVIES.png", + "STARMOVIES2": "https://www.mxdyeah.top/static/tvlogo/STARMOVIES2.png", + "STARMOVIESHD": "https://www.mxdyeah.top/static/tvlogo/STARMOVIESHD.png", + "STARMOVIEYULE": "https://www.mxdyeah.top/static/tvlogo/STARMOVIEYULE.png", + "STARSPORTS": "https://www.mxdyeah.top/static/tvlogo/STARSPORTS.png", + "STARWORLD": "https://www.mxdyeah.top/static/tvlogo/STARWORLD.png", + "STARZEAST": "https://www.mxdyeah.top/static/tvlogo/STARZEAST.png", + "STTV1": "https://www.mxdyeah.top/static/tvlogo/STTV1.png", + "SUNDANCETV": "https://www.mxdyeah.top/static/tvlogo/SUNDANCETV.png", + "SUPERKIDSCHANNEL": "https://www.mxdyeah.top/static/tvlogo/SUPERKIDSCHANNEL.png", + "SUPERSPORTACTION": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTACTION.png", + "SUPERSPORTBLITZ": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTBLITZ.png", + "SUPERSPORTCRICKET": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTCRICKET.png", + "SUPERSPORTFOOTBALL": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTFOOTBALL.png", + "SUPERSPORTGOLF": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTGOLF.png", + "SUPERSPORTLALIGA": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTLALIGA.png", + "SUPERSPORTPREMIERLEAGUE": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTPREMIERLEAGUE.png", + "SUPERSPORTRUGBY": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTRUGBY.png", + "SUPERSPORTTENNIS": "https://www.mxdyeah.top/static/tvlogo/SUPERSPORTTENNIS.png", + "SYFY": "https://www.mxdyeah.top/static/tvlogo/SYFY.png", + "TACT": "https://www.mxdyeah.top/static/tvlogo/TACT.png", + "TAIWANPLUS": "https://www.mxdyeah.top/static/tvlogo/TAIWANPLUS.png", + "TBS": "https://www.mxdyeah.top/static/tvlogo/TBS.png", + "TBSNEWS": "https://www.mxdyeah.top/static/tvlogo/TBSNEWS.png", + "TCM": "https://www.mxdyeah.top/static/tvlogo/TCM.png", + "TECHSTORM": "https://www.mxdyeah.top/static/tvlogo/TECHSTORM.png", + "TEEN": "https://www.mxdyeah.top/static/tvlogo/TEEN.png", + "TEENNICK": "https://www.mxdyeah.top/static/tvlogo/TEENNICK.png", + "TELEMUNDOEAST": "https://www.mxdyeah.top/static/tvlogo/TELEMUNDOEAST.png", + "TENNISCHANNEL": "https://www.mxdyeah.top/static/tvlogo/TENNISCHANNEL.png", + "TFC": "https://www.mxdyeah.top/static/tvlogo/TFC.png", + "THAIPBS": "https://www.mxdyeah.top/static/tvlogo/THAIPBS.png", + "THELEARNINGCHANNEL": "https://www.mxdyeah.top/static/tvlogo/THELEARNINGCHANNEL.png", + "THEMOVIECHANNELEAST": "https://www.mxdyeah.top/static/tvlogo/THEMOVIECHANNELEAST.png", + "THEWEATHERCHANNEL": "https://www.mxdyeah.top/static/tvlogo/THEWEATHERCHANNEL.png", + "THRILL": "https://www.mxdyeah.top/static/tvlogo/THRILL.png", + "TIANJIN": "https://www.mxdyeah.top/static/tvlogo/TIANJIN.png", + "TIENLIANGTVHD": "https://www.mxdyeah.top/static/tvlogo/TIENLIANGTVHD.png", + "TLC": "https://www.mxdyeah.top/static/tvlogo/TLC.png", + "TLC旅游生活": "https://www.mxdyeah.top/static/tvlogo/TLC旅游生活.png", + "TNT": "https://www.mxdyeah.top/static/tvlogo/TNT.png", + "TNTSPORTS1": "https://www.mxdyeah.top/static/tvlogo/TNTSPORTS1.png", + "TNTSPORTS2": "https://www.mxdyeah.top/static/tvlogo/TNTSPORTS2.png", + "TNTSPORTS3": "https://www.mxdyeah.top/static/tvlogo/TNTSPORTS3.png", + "TNTSPORTS4": "https://www.mxdyeah.top/static/tvlogo/TNTSPORTS4.png", + "TOPTVHD": "https://www.mxdyeah.top/static/tvlogo/TOPTVHD.png", + "TRACESPORTS": "https://www.mxdyeah.top/static/tvlogo/TRACESPORTS.png", + "TRACESPORTSTARS": "https://www.mxdyeah.top/static/tvlogo/TRACESPORTSTARS.png", + "TRACEURBAN": "https://www.mxdyeah.top/static/tvlogo/TRACEURBAN.png", + "TRAVEL2": "https://www.mxdyeah.top/static/tvlogo/TRAVEL2.png", + "TRAVELCHANNEL": "https://www.mxdyeah.top/static/tvlogo/TRAVELCHANNEL.png", + "TRTWORLD": "https://www.mxdyeah.top/static/tvlogo/TRTWORLD.png", + "TRUTV": "https://www.mxdyeah.top/static/tvlogo/TRUTV.png", + "TV5MONDE": "https://www.mxdyeah.top/static/tvlogo/TV5MONDE.png", + "TV5MONDEASIE": "https://www.mxdyeah.top/static/tvlogo/TV5MONDEASIE.png", + "TV5MONDESTYLE": "https://www.mxdyeah.top/static/tvlogo/TV5MONDESTYLE.png", + "TVB+": "https://www.mxdyeah.top/static/tvlogo/TVB+.png", + "TVBCLASSIC": "https://www.mxdyeah.top/static/tvlogo/TVBCLASSIC.png", + "TVBDRAMA": "https://www.mxdyeah.top/static/tvlogo/TVBDRAMA.png", + "TVBE": "https://www.mxdyeah.top/static/tvlogo/TVBE.png", + "TVBFINANCEINFORMATIONCHANNEL": "https://www.mxdyeah.top/static/tvlogo/TVBFINANCEINFORMATIONCHANNEL.png", + "TVBJ1": "https://www.mxdyeah.top/static/tvlogo/TVBJ1.png", + "TVBJ2": "https://www.mxdyeah.top/static/tvlogo/TVBJ2.png", + "TVBPLUS": "https://www.mxdyeah.top/static/tvlogo/TVBPLUS.png", + "TVBS": "https://www.mxdyeah.top/static/tvlogo/TVBS.png", + "TVBS亚洲": "https://www.mxdyeah.top/static/tvlogo/TVBS亚洲.png", + "TVBS台剧": "https://www.mxdyeah.top/static/tvlogo/TVBS台剧.png", + "TVBS新闻": "https://www.mxdyeah.top/static/tvlogo/TVBS新闻.png", + "TVBS欢乐": "https://www.mxdyeah.top/static/tvlogo/TVBS欢乐.png", + "TVBS精采": "https://www.mxdyeah.top/static/tvlogo/TVBS精采.png", + "TVBS综艺": "https://www.mxdyeah.top/static/tvlogo/TVBS综艺.png", + "TVB功夫": "https://www.mxdyeah.top/static/tvlogo/TVB功夫.png", + "TVB无线新闻": "https://www.mxdyeah.top/static/tvlogo/TVB无线新闻.png", + "TVB无线财经": "https://www.mxdyeah.top/static/tvlogo/TVB无线财经.png", + "TVB明珠": "https://www.mxdyeah.top/static/tvlogo/TVB明珠.png", + "TVB星河": "https://www.mxdyeah.top/static/tvlogo/TVB星河.png", + "TVB星河剧献": "https://www.mxdyeah.top/static/tvlogo/TVB星河剧献.png", + "TVB经典": "https://www.mxdyeah.top/static/tvlogo/TVB经典.png", + "TVB翡翠": "https://www.mxdyeah.top/static/tvlogo/TVB翡翠.png", + "TVN": "https://www.mxdyeah.top/static/tvlogo/TVN.png", + "TVONEHD": "https://www.mxdyeah.top/static/tvlogo/TVONEHD.png", + "UNIQUENEWS": "https://www.mxdyeah.top/static/tvlogo/UNIQUENEWS.png", + "UNIQUEUSTVHDUSTVHD": "https://www.mxdyeah.top/static/tvlogo/UNIQUEUSTVHDUSTVHD.png", + "UNIVERSALKIDS": "https://www.mxdyeah.top/static/tvlogo/UNIVERSALKIDS.png", + "UNIVISIONEAST": "https://www.mxdyeah.top/static/tvlogo/UNIVISIONEAST.png", + "USANETWORK": "https://www.mxdyeah.top/static/tvlogo/USANETWORK.png", + "VARIETY1": "https://www.mxdyeah.top/static/tvlogo/VARIETY1.png", + "VARIETY2": "https://www.mxdyeah.top/static/tvlogo/VARIETY2.png", + "VARIETY3": "https://www.mxdyeah.top/static/tvlogo/VARIETY3.png", + "VARIETY4": "https://www.mxdyeah.top/static/tvlogo/VARIETY4.png", + "VH1": "https://www.mxdyeah.top/static/tvlogo/VH1.png", + "VICE": "https://www.mxdyeah.top/static/tvlogo/VICE.png", + "VIDEOLANDDRAMA": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDDRAMA.png", + "VIDEOLANDJAPANESE": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDJAPANESE.png", + "VIDEOLANDMAXTV": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDMAXTV.png", + "VIDEOLANDMOVIES": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDMOVIES.png", + "VIDEOLANDONTV": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDONTV.png", + "VIDEOLANDSPORTSHD": "https://www.mxdyeah.top/static/tvlogo/VIDEOLANDSPORTSHD.png", + "VIRGIN1": "https://www.mxdyeah.top/static/tvlogo/VIRGIN1.png", + "VIRGIN2": "https://www.mxdyeah.top/static/tvlogo/VIRGIN2.png", + "VIRGIN3": "https://www.mxdyeah.top/static/tvlogo/VIRGIN3.png", + "VIUTV": "https://www.mxdyeah.top/static/tvlogo/VIUTV.png", + "VIUTV6": "https://www.mxdyeah.top/static/tvlogo/VIUTV6.png", + "VIUTVSIX": "https://www.mxdyeah.top/static/tvlogo/VIUTVSIX.png", + "VOA": "https://www.mxdyeah.top/static/tvlogo/VOA.png", + "VOA美国之音": "https://www.mxdyeah.top/static/tvlogo/VOA美国之音.png", + "VTV4": "https://www.mxdyeah.top/static/tvlogo/VTV4.png", + "WABCNEWYORKABCEAST": "https://www.mxdyeah.top/static/tvlogo/WABCNEWYORKABCEAST.png", + "WAKUWAKU": "https://www.mxdyeah.top/static/tvlogo/WAKUWAKU.png", + "WANGLUOQIPAI": "https://www.mxdyeah.top/static/tvlogo/WANGLUOQIPAI.png", + "WARNERTV": "https://www.mxdyeah.top/static/tvlogo/WARNERTV.png", + "WCBSNEWYORKCBSEAST": "https://www.mxdyeah.top/static/tvlogo/WCBSNEWYORKCBSEAST.png", + "WEILAOJINGCAI": "https://www.mxdyeah.top/static/tvlogo/WEILAOJINGCAI.png", + "WEIXIN": "https://www.mxdyeah.top/static/tvlogo/WEIXIN.png", + "WETV": "https://www.mxdyeah.top/static/tvlogo/WETV.png", + "WFGXTV": "https://www.mxdyeah.top/static/tvlogo/WFGXTV.png", + "WFKWTV": "https://www.mxdyeah.top/static/tvlogo/WFKWTV.png", + "WFTV1": "https://www.mxdyeah.top/static/tvlogo/WFTV1.png", + "WFTV2": "https://www.mxdyeah.top/static/tvlogo/WFTV2.png", + "WFTV3": "https://www.mxdyeah.top/static/tvlogo/WFTV3.png", + "WFTV4": "https://www.mxdyeah.top/static/tvlogo/WFTV4.png", + "WHTV1": "https://www.mxdyeah.top/static/tvlogo/WHTV1.png", + "WHTV2": "https://www.mxdyeah.top/static/tvlogo/WHTV2.png", + "WHTV3": "https://www.mxdyeah.top/static/tvlogo/WHTV3.png", + "WHTV4": "https://www.mxdyeah.top/static/tvlogo/WHTV4.png", + "WHTV5": "https://www.mxdyeah.top/static/tvlogo/WHTV5.png", + "WHTV6": "https://www.mxdyeah.top/static/tvlogo/WHTV6.png", + "WHTV7": "https://www.mxdyeah.top/static/tvlogo/WHTV7.png", + "WILDPLANET": "https://www.mxdyeah.top/static/tvlogo/WILDPLANET.png", + "WILLOWCRICKET": "https://www.mxdyeah.top/static/tvlogo/WILLOWCRICKET.png", + "WILLOWEXTRA": "https://www.mxdyeah.top/static/tvlogo/WILLOWEXTRA.png", + "WNBCNEWYORKNBCEAST": "https://www.mxdyeah.top/static/tvlogo/WNBCNEWYORKNBCEAST.png", + "WNETNEWYORK": "https://www.mxdyeah.top/static/tvlogo/WNETNEWYORK.png", + "WNYWNEWYORKFOXEAST": "https://www.mxdyeah.top/static/tvlogo/WNYWNEWYORKFOXEAST.png", + "WOLVESVALLEY": "https://www.mxdyeah.top/static/tvlogo/WOLVESVALLEY.png", + "WORLDFISHINGNETWORK": "https://www.mxdyeah.top/static/tvlogo/WORLDFISHINGNETWORK.png", + "WPIXNEWYORK": "https://www.mxdyeah.top/static/tvlogo/WPIXNEWYORK.png", + "WUXINGTIYU": "https://www.mxdyeah.top/static/tvlogo/WUXINGTIYU.png", + "WWE": "https://www.mxdyeah.top/static/tvlogo/WWE.png", + "WXXW": "https://www.mxdyeah.top/static/tvlogo/WXXW.png", + "XFBY": "https://www.mxdyeah.top/static/tvlogo/XFBY.png", + "XIAMEN": "https://www.mxdyeah.top/static/tvlogo/XIAMEN.png", + "XINDONGMAN": "https://www.mxdyeah.top/static/tvlogo/XINDONGMAN.png", + "XINGFUCAI": "https://www.mxdyeah.top/static/tvlogo/XINGFUCAI.png", + "XINJIANG": "https://www.mxdyeah.top/static/tvlogo/XINJIANG.png", + "XUANDONG": "https://www.mxdyeah.top/static/tvlogo/XUANDONG.png", + "YANBIAN1": "https://www.mxdyeah.top/static/tvlogo/YANBIAN1.png", + "YANGGUANGWEISHI": "https://www.mxdyeah.top/static/tvlogo/YANGGUANGWEISHI.png", + "YOUMAN": "https://www.mxdyeah.top/static/tvlogo/YOUMAN.png", + "YOUXIANCAIJINGZIXUN": "https://www.mxdyeah.top/static/tvlogo/YOUXIANCAIJINGZIXUN.png", + "YOUXIANXINWEN": "https://www.mxdyeah.top/static/tvlogo/YOUXIANXINWEN.png", + "YOUXIFENGYUN": "https://www.mxdyeah.top/static/tvlogo/YOUXIFENGYUN.png", + "YUANZHUMIN": "https://www.mxdyeah.top/static/tvlogo/YUANZHUMIN.png", + "Z": "https://www.mxdyeah.top/static/tvlogo/Z.png", + "ZCHANNEL": "https://www.mxdyeah.top/static/tvlogo/ZCHANNEL.png", + "ZCTV": "https://www.mxdyeah.top/static/tvlogo/ZCTV.png", + "ZGJT": "https://www.mxdyeah.top/static/tvlogo/ZGJT.png", + "ZHUJIANG": "https://www.mxdyeah.top/static/tvlogo/ZHUJIANG.png", + "ZOOMOO": "https://www.mxdyeah.top/static/tvlogo/ZOOMOO.png", + "dajs": "https://www.mxdyeah.top/static/tvlogo/dajs.png", + "hmdj": "https://www.mxdyeah.top/static/tvlogo/hmdj.png", + "huashu4k": "https://www.mxdyeah.top/static/tvlogo/huashu4k.png", + "jingcai01": "https://www.mxdyeah.top/static/tvlogo/jingcai01.png", + "jingcai02": "https://www.mxdyeah.top/static/tvlogo/jingcai02.png", + "jingcai03": "https://www.mxdyeah.top/static/tvlogo/jingcai03.png", + "jingcai04": "https://www.mxdyeah.top/static/tvlogo/jingcai04.png", + "qjs": "https://www.mxdyeah.top/static/tvlogo/qjs.png", + "七彩戏剧": "https://www.mxdyeah.top/static/tvlogo/七彩戏剧.png", + "三佳购物": "https://www.mxdyeah.top/static/tvlogo/三佳购物.png", + "三圣": "https://www.mxdyeah.top/static/tvlogo/三圣.png", + "三明": "https://www.mxdyeah.top/static/tvlogo/三明.png", + "三明公共": "https://www.mxdyeah.top/static/tvlogo/三明公共.png", + "三明新闻": "https://www.mxdyeah.top/static/tvlogo/三明新闻.png", + "三沙卫视": "https://www.mxdyeah.top/static/tvlogo/三沙卫视.png", + "三立": "https://www.mxdyeah.top/static/tvlogo/三立.png", + "三立INEWS": "https://www.mxdyeah.top/static/tvlogo/三立INEWS.png", + "三立台湾": "https://www.mxdyeah.top/static/tvlogo/三立台湾.png", + "三立国际": "https://www.mxdyeah.top/static/tvlogo/三立国际.png", + "三立戏剧": "https://www.mxdyeah.top/static/tvlogo/三立戏剧.png", + "三立新闻+": "https://www.mxdyeah.top/static/tvlogo/三立新闻+.png", + "三立新闻": "https://www.mxdyeah.top/static/tvlogo/三立新闻.png", + "三立综合": "https://www.mxdyeah.top/static/tvlogo/三立综合.png", + "三立财经新闻": "https://www.mxdyeah.top/static/tvlogo/三立财经新闻.png", + "三立都会": "https://www.mxdyeah.top/static/tvlogo/三立都会.png", + "上杭": "https://www.mxdyeah.top/static/tvlogo/上杭.png", + "上海ICS外语": "https://www.mxdyeah.top/static/tvlogo/上海ICS外语.png", + "上海东方影视": "https://www.mxdyeah.top/static/tvlogo/上海东方影视.png", + "上海东方财经": "https://www.mxdyeah.top/static/tvlogo/上海东方财经.png", + "上海五星体育": "https://www.mxdyeah.top/static/tvlogo/上海五星体育.png", + "上海外语": "https://www.mxdyeah.top/static/tvlogo/上海外语.png", + "上海教育": "https://www.mxdyeah.top/static/tvlogo/上海教育.png", + "上海新闻综合": "https://www.mxdyeah.top/static/tvlogo/上海新闻综合.png", + "上海第一财经": "https://www.mxdyeah.top/static/tvlogo/上海第一财经.png", + "上海纪实": "https://www.mxdyeah.top/static/tvlogo/上海纪实.png", + "上海纪实人文": "https://www.mxdyeah.top/static/tvlogo/上海纪实人文.png", + "上海都市": "https://www.mxdyeah.top/static/tvlogo/上海都市.png", + "上视新闻": "https://www.mxdyeah.top/static/tvlogo/上视新闻.png", + "上饶": "https://www.mxdyeah.top/static/tvlogo/上饶.png", + "世新综合": "https://www.mxdyeah.top/static/tvlogo/世新综合.png", + "世界": "https://www.mxdyeah.top/static/tvlogo/世界.png", + "世界地理": "https://www.mxdyeah.top/static/tvlogo/世界地理.png", + "东北戏曲": "https://www.mxdyeah.top/static/tvlogo/东北戏曲.png", + "东南卫视": "https://www.mxdyeah.top/static/tvlogo/东南卫视.png", + "东山": "https://www.mxdyeah.top/static/tvlogo/东山.png", + "东方卫视": "https://www.mxdyeah.top/static/tvlogo/东方卫视.png", + "东方卫视国际": "https://www.mxdyeah.top/static/tvlogo/东方卫视国际.png", + "东方影视": "https://www.mxdyeah.top/static/tvlogo/东方影视.png", + "东方财经": "https://www.mxdyeah.top/static/tvlogo/东方财经.png", + "东方购物": "https://www.mxdyeah.top/static/tvlogo/东方购物.png", + "东森亚洲": "https://www.mxdyeah.top/static/tvlogo/东森亚洲.png", + "东森亚洲卫视": "https://www.mxdyeah.top/static/tvlogo/东森亚洲卫视.png", + "东森亚洲新闻": "https://www.mxdyeah.top/static/tvlogo/东森亚洲新闻.png", + "东森幼幼": "https://www.mxdyeah.top/static/tvlogo/东森幼幼.png", + "东森戏剧": "https://www.mxdyeah.top/static/tvlogo/东森戏剧.png", + "东森新闻": "https://www.mxdyeah.top/static/tvlogo/东森新闻.png", + "东森洋片": "https://www.mxdyeah.top/static/tvlogo/东森洋片.png", + "东森电影": "https://www.mxdyeah.top/static/tvlogo/东森电影.png", + "东森综合": "https://www.mxdyeah.top/static/tvlogo/东森综合.png", + "东森财经": "https://www.mxdyeah.top/static/tvlogo/东森财经.png", + "东森财经新闻": "https://www.mxdyeah.top/static/tvlogo/东森财经新闻.png", + "东森购物": "https://www.mxdyeah.top/static/tvlogo/东森购物.png", + "东森超视": "https://www.mxdyeah.top/static/tvlogo/东森超视.png", + "东莞新闻综合": "https://www.mxdyeah.top/static/tvlogo/东莞新闻综合.png", + "东莞生活资讯": "https://www.mxdyeah.top/static/tvlogo/东莞生活资讯.png", + "东风": "https://www.mxdyeah.top/static/tvlogo/东风.png", + "东风卫视": "https://www.mxdyeah.top/static/tvlogo/东风卫视.png", + "中华功夫": "https://www.mxdyeah.top/static/tvlogo/中华功夫.png", + "中华卫视": "https://www.mxdyeah.top/static/tvlogo/中华卫视.png", + "中华特产": "https://www.mxdyeah.top/static/tvlogo/中华特产.png", + "中华美食": "https://www.mxdyeah.top/static/tvlogo/中华美食.png", + "中国交通": "https://www.mxdyeah.top/static/tvlogo/中国交通.png", + "中国天气": "https://www.mxdyeah.top/static/tvlogo/中国天气.png", + "中国教育1": "https://www.mxdyeah.top/static/tvlogo/中国教育1.png", + "中国教育2": "https://www.mxdyeah.top/static/tvlogo/中国教育2.png", + "中国教育3": "https://www.mxdyeah.top/static/tvlogo/中国教育3.png", + "中国教育4": "https://www.mxdyeah.top/static/tvlogo/中国教育4.png", + "中国教育电视台1": "https://www.mxdyeah.top/static/tvlogo/中国教育电视台1.png", + "中国教育电视台2": "https://www.mxdyeah.top/static/tvlogo/中国教育电视台2.png", + "中国教育电视台3": "https://www.mxdyeah.top/static/tvlogo/中国教育电视台3.png", + "中国教育电视台4": "https://www.mxdyeah.top/static/tvlogo/中国教育电视台4.png", + "中国气象": "https://www.mxdyeah.top/static/tvlogo/中国气象.png", + "中国环球电视网英语": "https://www.mxdyeah.top/static/tvlogo/中国环球电视网英语.png", + "中国环球电视网记录": "https://www.mxdyeah.top/static/tvlogo/中国环球电视网记录.png", + "中国电影": "https://www.mxdyeah.top/static/tvlogo/中国电影.png", + "中天亚洲": "https://www.mxdyeah.top/static/tvlogo/中天亚洲.png", + "中天娱乐": "https://www.mxdyeah.top/static/tvlogo/中天娱乐.png", + "中天新闻": "https://www.mxdyeah.top/static/tvlogo/中天新闻.png", + "中天新闻2": "https://www.mxdyeah.top/static/tvlogo/中天新闻2.png", + "中天综合": "https://www.mxdyeah.top/static/tvlogo/中天综合.png", + "中央新影中学生": "https://www.mxdyeah.top/static/tvlogo/中央新影中学生.png", + "中央新影发现之旅": "https://www.mxdyeah.top/static/tvlogo/中央新影发现之旅.png", + "中央新影新科动漫": "https://www.mxdyeah.top/static/tvlogo/中央新影新科动漫.png", + "中央新影老故事": "https://www.mxdyeah.top/static/tvlogo/中央新影老故事.png", + "中央新影证券资讯": "https://www.mxdyeah.top/static/tvlogo/中央新影证券资讯.png", + "中央电视台综合频道港澳版": "https://www.mxdyeah.top/static/tvlogo/中央电视台综合频道港澳版.png", + "中学生": "https://www.mxdyeah.top/static/tvlogo/中学生.png", + "中山公共": "https://www.mxdyeah.top/static/tvlogo/中山公共.png", + "中山教育": "https://www.mxdyeah.top/static/tvlogo/中山教育.png", + "中山综合": "https://www.mxdyeah.top/static/tvlogo/中山综合.png", + "中山香山文化": "https://www.mxdyeah.top/static/tvlogo/中山香山文化.png", + "中视": "https://www.mxdyeah.top/static/tvlogo/中视.png", + "中视新闻": "https://www.mxdyeah.top/static/tvlogo/中视新闻.png", + "中视经典": "https://www.mxdyeah.top/static/tvlogo/中视经典.png", + "中视菁采": "https://www.mxdyeah.top/static/tvlogo/中视菁采.png", + "中视购物": "https://www.mxdyeah.top/static/tvlogo/中视购物.png", + "临沂综合": "https://www.mxdyeah.top/static/tvlogo/临沂综合.png", + "丹东": "https://www.mxdyeah.top/static/tvlogo/丹东.png", + "丹寨综合": "https://www.mxdyeah.top/static/tvlogo/丹寨综合.png", + "之江纪录": "https://www.mxdyeah.top/static/tvlogo/之江纪录.png", + "之江记录": "https://www.mxdyeah.top/static/tvlogo/之江记录.png", + "乌兰察布": "https://www.mxdyeah.top/static/tvlogo/乌兰察布.png", + "乌海新闻综合": "https://www.mxdyeah.top/static/tvlogo/乌海新闻综合.png", + "乌海都市生活": "https://www.mxdyeah.top/static/tvlogo/乌海都市生活.png", + "乌鲁木齐": "https://www.mxdyeah.top/static/tvlogo/乌鲁木齐.png", + "乐山公共": "https://www.mxdyeah.top/static/tvlogo/乐山公共.png", + "乐山新闻综合": "https://www.mxdyeah.top/static/tvlogo/乐山新闻综合.png", + "乐游": "https://www.mxdyeah.top/static/tvlogo/乐游.png", + "九江": "https://www.mxdyeah.top/static/tvlogo/九江.png", + "书画": "https://www.mxdyeah.top/static/tvlogo/书画.png", + "云南公共": "https://www.mxdyeah.top/static/tvlogo/云南公共.png", + "云南卫视": "https://www.mxdyeah.top/static/tvlogo/云南卫视.png", + "云南娱乐": "https://www.mxdyeah.top/static/tvlogo/云南娱乐.png", + "云南少儿": "https://www.mxdyeah.top/static/tvlogo/云南少儿.png", + "云南康旅": "https://www.mxdyeah.top/static/tvlogo/云南康旅.png", + "云南影视": "https://www.mxdyeah.top/static/tvlogo/云南影视.png", + "云南澜湄国际卫视": "https://www.mxdyeah.top/static/tvlogo/云南澜湄国际卫视.png", + "云南生活资讯": "https://www.mxdyeah.top/static/tvlogo/云南生活资讯.png", + "云南都市": "https://www.mxdyeah.top/static/tvlogo/云南都市.png", + "云浮公共": "https://www.mxdyeah.top/static/tvlogo/云浮公共.png", + "云浮文旅": "https://www.mxdyeah.top/static/tvlogo/云浮文旅.png", + "云浮综合": "https://www.mxdyeah.top/static/tvlogo/云浮综合.png", + "云霄": "https://www.mxdyeah.top/static/tvlogo/云霄.png", + "五华": "https://www.mxdyeah.top/static/tvlogo/五华.png", + "五星体育": "https://www.mxdyeah.top/static/tvlogo/五星体育.png", + "五星影院": "https://www.mxdyeah.top/static/tvlogo/五星影院.png", + "亚旅卫视": "https://www.mxdyeah.top/static/tvlogo/亚旅卫视.png", + "亚洲剧": "https://www.mxdyeah.top/static/tvlogo/亚洲剧.png", + "亚洲新闻": "https://www.mxdyeah.top/static/tvlogo/亚洲新闻.png", + "亚洲旅游": "https://www.mxdyeah.top/static/tvlogo/亚洲旅游.png", + "亚洲电影": "https://www.mxdyeah.top/static/tvlogo/亚洲电影.png", + "亚洲电视": "https://www.mxdyeah.top/static/tvlogo/亚洲电视.png", + "亚洲综合": "https://www.mxdyeah.top/static/tvlogo/亚洲综合.png", + "亚洲美食": "https://www.mxdyeah.top/static/tvlogo/亚洲美食.png", + "亚视ATV": "https://www.mxdyeah.top/static/tvlogo/亚视ATV.png", + "京视剧场": "https://www.mxdyeah.top/static/tvlogo/京视剧场.png", + "人间卫视": "https://www.mxdyeah.top/static/tvlogo/人间卫视.png", + "仙游": "https://www.mxdyeah.top/static/tvlogo/仙游.png", + "优优宝贝": "https://www.mxdyeah.top/static/tvlogo/优优宝贝.png", + "优漫卡通": "https://www.mxdyeah.top/static/tvlogo/优漫卡通.png", + "优购物": "https://www.mxdyeah.top/static/tvlogo/优购物.png", + "优酷": "https://www.mxdyeah.top/static/tvlogo/优酷.png", + "体育赛事": "https://www.mxdyeah.top/static/tvlogo/体育赛事.png", + "佛冈": "https://www.mxdyeah.top/static/tvlogo/佛冈.png", + "佛卫慈悲": "https://www.mxdyeah.top/static/tvlogo/佛卫慈悲.png", + "佛坪": "https://www.mxdyeah.top/static/tvlogo/佛坪.png", + "佛山公共": "https://www.mxdyeah.top/static/tvlogo/佛山公共.png", + "佛山南海": "https://www.mxdyeah.top/static/tvlogo/佛山南海.png", + "佛山影视": "https://www.mxdyeah.top/static/tvlogo/佛山影视.png", + "佛山综合": "https://www.mxdyeah.top/static/tvlogo/佛山综合.png", + "佛山顺德": "https://www.mxdyeah.top/static/tvlogo/佛山顺德.png", + "保康文化旅游": "https://www.mxdyeah.top/static/tvlogo/保康文化旅游.png", + "信吉": "https://www.mxdyeah.top/static/tvlogo/信吉.png", + "信吉卫视": "https://www.mxdyeah.top/static/tvlogo/信吉卫视.png", + "信吉艺文": "https://www.mxdyeah.top/static/tvlogo/信吉艺文.png", + "信大": "https://www.mxdyeah.top/static/tvlogo/信大.png", + "信大电视": "https://www.mxdyeah.top/static/tvlogo/信大电视.png", + "信宜": "https://www.mxdyeah.top/static/tvlogo/信宜.png", + "僵尸电影": "https://www.mxdyeah.top/static/tvlogo/僵尸电影.png", + "儿童卡通": "https://www.mxdyeah.top/static/tvlogo/儿童卡通.png", + "先锋乒羽": "https://www.mxdyeah.top/static/tvlogo/先锋乒羽.png", + "光影欧洲": "https://www.mxdyeah.top/static/tvlogo/光影欧洲.png", + "光泽": "https://www.mxdyeah.top/static/tvlogo/光泽.png", + "全大": "https://www.mxdyeah.top/static/tvlogo/全大.png", + "全大电视": "https://www.mxdyeah.top/static/tvlogo/全大电视.png", + "全纪实": "https://www.mxdyeah.top/static/tvlogo/全纪实.png", + "八大优": "https://www.mxdyeah.top/static/tvlogo/八大优.png", + "八大娱乐": "https://www.mxdyeah.top/static/tvlogo/八大娱乐.png", + "八大戏剧": "https://www.mxdyeah.top/static/tvlogo/八大戏剧.png", + "八大第一": "https://www.mxdyeah.top/static/tvlogo/八大第一.png", + "八大精彩": "https://www.mxdyeah.top/static/tvlogo/八大精彩.png", + "八大综合": "https://www.mxdyeah.top/static/tvlogo/八大综合.png", + "八大综艺": "https://www.mxdyeah.top/static/tvlogo/八大综艺.png", + "公视": "https://www.mxdyeah.top/static/tvlogo/公视.png", + "公视2": "https://www.mxdyeah.top/static/tvlogo/公视2.png", + "公视3": "https://www.mxdyeah.top/static/tvlogo/公视3.png", + "公视三": "https://www.mxdyeah.top/static/tvlogo/公视三.png", + "公视台语": "https://www.mxdyeah.top/static/tvlogo/公视台语.png", + "公视戏剧": "https://www.mxdyeah.top/static/tvlogo/公视戏剧.png", + "公视新闻": "https://www.mxdyeah.top/static/tvlogo/公视新闻.png", + "兰州文旅": "https://www.mxdyeah.top/static/tvlogo/兰州文旅.png", + "兰州新闻综合": "https://www.mxdyeah.top/static/tvlogo/兰州新闻综合.png", + "兰州生活经济": "https://www.mxdyeah.top/static/tvlogo/兰州生活经济.png", + "兴宁": "https://www.mxdyeah.top/static/tvlogo/兴宁.png", + "兴安": "https://www.mxdyeah.top/static/tvlogo/兴安.png", + "兵器科技": "https://www.mxdyeah.top/static/tvlogo/兵器科技.png", + "兵团卫视": "https://www.mxdyeah.top/static/tvlogo/兵团卫视.png", + "内蒙古IPTV": "https://www.mxdyeah.top/static/tvlogo/内蒙古IPTV.png", + "内蒙古农牧": "https://www.mxdyeah.top/static/tvlogo/内蒙古农牧.png", + "内蒙古卫视": "https://www.mxdyeah.top/static/tvlogo/内蒙古卫视.png", + "内蒙古少儿": "https://www.mxdyeah.top/static/tvlogo/内蒙古少儿.png", + "内蒙古文体娱乐": "https://www.mxdyeah.top/static/tvlogo/内蒙古文体娱乐.png", + "内蒙古新闻综合": "https://www.mxdyeah.top/static/tvlogo/内蒙古新闻综合.png", + "内蒙古经济生活": "https://www.mxdyeah.top/static/tvlogo/内蒙古经济生活.png", + "内蒙古综合": "https://www.mxdyeah.top/static/tvlogo/内蒙古综合.png", + "内蒙古蒙语卫视": "https://www.mxdyeah.top/static/tvlogo/内蒙古蒙语卫视.png", + "内蒙古蒙语文化": "https://www.mxdyeah.top/static/tvlogo/内蒙古蒙语文化.png", + "内蒙古通用": "https://www.mxdyeah.top/static/tvlogo/内蒙古通用.png", + "军事": "https://www.mxdyeah.top/static/tvlogo/军事.png", + "农林卫视": "https://www.mxdyeah.top/static/tvlogo/农林卫视.png", + "农民": "https://www.mxdyeah.top/static/tvlogo/农民.png", + "冠军": "https://www.mxdyeah.top/static/tvlogo/冠军.png", + "冠军NO1": "https://www.mxdyeah.top/static/tvlogo/冠军NO1.png", + "冠军梦想": "https://www.mxdyeah.top/static/tvlogo/冠军梦想.png", + "冬奥纪实": "https://www.mxdyeah.top/static/tvlogo/冬奥纪实.png", + "冰雪体育": "https://www.mxdyeah.top/static/tvlogo/冰雪体育.png", + "凤凰中文": "https://www.mxdyeah.top/static/tvlogo/凤凰中文.png", + "凤凰卫视中文": "https://www.mxdyeah.top/static/tvlogo/凤凰卫视中文.png", + "凤凰卫视电影": "https://www.mxdyeah.top/static/tvlogo/凤凰卫视电影.png", + "凤凰卫视资讯": "https://www.mxdyeah.top/static/tvlogo/凤凰卫视资讯.png", + "凤凰卫视香港": "https://www.mxdyeah.top/static/tvlogo/凤凰卫视香港.png", + "凤凰电影": "https://www.mxdyeah.top/static/tvlogo/凤凰电影.png", + "凤凰资讯": "https://www.mxdyeah.top/static/tvlogo/凤凰资讯.png", + "凤凰香港": "https://www.mxdyeah.top/static/tvlogo/凤凰香港.png", + "凤县": "https://www.mxdyeah.top/static/tvlogo/凤县.png", + "凤梨直击": "https://www.mxdyeah.top/static/tvlogo/凤梨直击.png", + "凤翔": "https://www.mxdyeah.top/static/tvlogo/凤翔.png", + "创世电视": "https://www.mxdyeah.top/static/tvlogo/创世电视.png", + "功夫": "https://www.mxdyeah.top/static/tvlogo/功夫.png", + "动作影院": "https://www.mxdyeah.top/static/tvlogo/动作影院.png", + "动漫秀场": "https://www.mxdyeah.top/static/tvlogo/动漫秀场.png", + "动物星球": "https://www.mxdyeah.top/static/tvlogo/动物星球.png", + "劲爆体育": "https://www.mxdyeah.top/static/tvlogo/劲爆体育.png", + "勉县": "https://www.mxdyeah.top/static/tvlogo/勉县.png", + "包头新闻综合": "https://www.mxdyeah.top/static/tvlogo/包头新闻综合.png", + "包头生活服务": "https://www.mxdyeah.top/static/tvlogo/包头生活服务.png", + "包头经济": "https://www.mxdyeah.top/static/tvlogo/包头经济.png", + "化州": "https://www.mxdyeah.top/static/tvlogo/化州.png", + "北京4K超清": "https://www.mxdyeah.top/static/tvlogo/北京4K超清.png", + "北京IPTV4K": "https://www.mxdyeah.top/static/tvlogo/北京IPTV4K.png", + "北京IPTV淘电影": "https://www.mxdyeah.top/static/tvlogo/北京IPTV淘电影.png", + "北京KAKU少儿": "https://www.mxdyeah.top/static/tvlogo/北京KAKU少儿.png", + "北京体育休闲": "https://www.mxdyeah.top/static/tvlogo/北京体育休闲.png", + "北京体育休闲4K": "https://www.mxdyeah.top/static/tvlogo/北京体育休闲4K.png", + "北京冬奥": "https://www.mxdyeah.top/static/tvlogo/北京冬奥.png", + "北京卡酷": "https://www.mxdyeah.top/static/tvlogo/北京卡酷.png", + "北京卡酷少儿": "https://www.mxdyeah.top/static/tvlogo/北京卡酷少儿.png", + "北京卫视": "https://www.mxdyeah.top/static/tvlogo/北京卫视.png", + "北京卫视NAME版": "https://www.mxdyeah.top/static/tvlogo/北京卫视NAME版.png", + "北京国际": "https://www.mxdyeah.top/static/tvlogo/北京国际.png", + "北京大健康": "https://www.mxdyeah.top/static/tvlogo/北京大健康.png", + "北京影视": "https://www.mxdyeah.top/static/tvlogo/北京影视.png", + "北京文艺": "https://www.mxdyeah.top/static/tvlogo/北京文艺.png", + "北京新闻": "https://www.mxdyeah.top/static/tvlogo/北京新闻.png", + "北京淘BABY": "https://www.mxdyeah.top/static/tvlogo/北京淘BABY.png", + "北京淘剧场": "https://www.mxdyeah.top/static/tvlogo/北京淘剧场.png", + "北京淘娱乐": "https://www.mxdyeah.top/static/tvlogo/北京淘娱乐.png", + "北京淘电影": "https://www.mxdyeah.top/static/tvlogo/北京淘电影.png", + "北京淘精彩": "https://www.mxdyeah.top/static/tvlogo/北京淘精彩.png", + "北京生活": "https://www.mxdyeah.top/static/tvlogo/北京生活.png", + "北京科教": "https://www.mxdyeah.top/static/tvlogo/北京科教.png", + "北京纪实": "https://www.mxdyeah.top/static/tvlogo/北京纪实.png", + "北京纪实科教": "https://www.mxdyeah.top/static/tvlogo/北京纪实科教.png", + "北京纪实科教8K": "https://www.mxdyeah.top/static/tvlogo/北京纪实科教8K.png", + "北京萌宠TV": "https://www.mxdyeah.top/static/tvlogo/北京萌宠TV.png", + "北京财经": "https://www.mxdyeah.top/static/tvlogo/北京财经.png", + "北京青年": "https://www.mxdyeah.top/static/tvlogo/北京青年.png", + "北川1": "https://www.mxdyeah.top/static/tvlogo/北川1.png", + "北川2": "https://www.mxdyeah.top/static/tvlogo/北川2.png", + "北方": "https://www.mxdyeah.top/static/tvlogo/北方.png", + "北方商务": "https://www.mxdyeah.top/static/tvlogo/北方商务.png", + "北方导视": "https://www.mxdyeah.top/static/tvlogo/北方导视.png", + "十堰新闻": "https://www.mxdyeah.top/static/tvlogo/十堰新闻.png", + "十方法界": "https://www.mxdyeah.top/static/tvlogo/十方法界.png", + "千禧经典": "https://www.mxdyeah.top/static/tvlogo/千禧经典.png", + "千阳": "https://www.mxdyeah.top/static/tvlogo/千阳.png", + "午夜剧场": "https://www.mxdyeah.top/static/tvlogo/午夜剧场.png", + "半岛": "https://www.mxdyeah.top/static/tvlogo/半岛.png", + "半岛国际新闻": "https://www.mxdyeah.top/static/tvlogo/半岛国际新闻.png", + "半岛新闻": "https://www.mxdyeah.top/static/tvlogo/半岛新闻.png", + "半岛电视台英语": "https://www.mxdyeah.top/static/tvlogo/半岛电视台英语.png", + "华安": "https://www.mxdyeah.top/static/tvlogo/华安.png", + "华数4K": "https://www.mxdyeah.top/static/tvlogo/华数4K.png", + "华数亚洲影院": "https://www.mxdyeah.top/static/tvlogo/华数亚洲影院.png", + "华数公主城堡": "https://www.mxdyeah.top/static/tvlogo/华数公主城堡.png", + "华数军事纪实": "https://www.mxdyeah.top/static/tvlogo/华数军事纪实.png", + "华数剧情": "https://www.mxdyeah.top/static/tvlogo/华数剧情.png", + "华数华数游戏": "https://www.mxdyeah.top/static/tvlogo/华数华数游戏.png", + "华数历史解密": "https://www.mxdyeah.top/static/tvlogo/华数历史解密.png", + "华数古装剧1": "https://www.mxdyeah.top/static/tvlogo/华数古装剧1.png", + "华数古装剧2": "https://www.mxdyeah.top/static/tvlogo/华数古装剧2.png", + "华数外国动作": "https://www.mxdyeah.top/static/tvlogo/华数外国动作.png", + "华数大国时代": "https://www.mxdyeah.top/static/tvlogo/华数大国时代.png", + "华数学警雄心": "https://www.mxdyeah.top/static/tvlogo/华数学警雄心.png", + "华数少儿": "https://www.mxdyeah.top/static/tvlogo/华数少儿.png", + "华数少林问道": "https://www.mxdyeah.top/static/tvlogo/华数少林问道.png", + "华数心动剧场": "https://www.mxdyeah.top/static/tvlogo/华数心动剧场.png", + "华数情感生活": "https://www.mxdyeah.top/static/tvlogo/华数情感生活.png", + "华数惊惧悬疑": "https://www.mxdyeah.top/static/tvlogo/华数惊惧悬疑.png", + "华数时尚1": "https://www.mxdyeah.top/static/tvlogo/华数时尚1.png", + "华数时尚2": "https://www.mxdyeah.top/static/tvlogo/华数时尚2.png", + "华数时装1": "https://www.mxdyeah.top/static/tvlogo/华数时装1.png", + "华数时装2": "https://www.mxdyeah.top/static/tvlogo/华数时装2.png", + "华数欧美冒险": "https://www.mxdyeah.top/static/tvlogo/华数欧美冒险.png", + "华数漫游世界": "https://www.mxdyeah.top/static/tvlogo/华数漫游世界.png", + "华数热血抗战": "https://www.mxdyeah.top/static/tvlogo/华数热血抗战.png", + "华数热门网大": "https://www.mxdyeah.top/static/tvlogo/华数热门网大.png", + "华数生活杂谈": "https://www.mxdyeah.top/static/tvlogo/华数生活杂谈.png", + "华数直播": "https://www.mxdyeah.top/static/tvlogo/华数直播.png", + "华数睡前故事": "https://www.mxdyeah.top/static/tvlogo/华数睡前故事.png", + "华数社会真相": "https://www.mxdyeah.top/static/tvlogo/华数社会真相.png", + "华数科教人文": "https://www.mxdyeah.top/static/tvlogo/华数科教人文.png", + "华数美食": "https://www.mxdyeah.top/static/tvlogo/华数美食.png", + "华数高清娱乐": "https://www.mxdyeah.top/static/tvlogo/华数高清娱乐.png", + "华纳电影": "https://www.mxdyeah.top/static/tvlogo/华纳电影.png", + "华艺MBC": "https://www.mxdyeah.top/static/tvlogo/华艺MBC.png", + "华艺MBC综合": "https://www.mxdyeah.top/static/tvlogo/华艺MBC综合.png", + "华艺台湾": "https://www.mxdyeah.top/static/tvlogo/华艺台湾.png", + "华艺影剧": "https://www.mxdyeah.top/static/tvlogo/华艺影剧.png", + "华艺综合": "https://www.mxdyeah.top/static/tvlogo/华艺综合.png", + "华藏卫视": "https://www.mxdyeah.top/static/tvlogo/华藏卫视.png", + "华藏电视": "https://www.mxdyeah.top/static/tvlogo/华藏电视.png", + "华视": "https://www.mxdyeah.top/static/tvlogo/华视.png", + "华视教育": "https://www.mxdyeah.top/static/tvlogo/华视教育.png", + "华视教育文化": "https://www.mxdyeah.top/static/tvlogo/华视教育文化.png", + "华视新闻": "https://www.mxdyeah.top/static/tvlogo/华视新闻.png", + "华视新闻资讯": "https://www.mxdyeah.top/static/tvlogo/华视新闻资讯.png", + "华诚影视": "https://www.mxdyeah.top/static/tvlogo/华诚影视.png", + "华诚影视GOLD": "https://www.mxdyeah.top/static/tvlogo/华诚影视GOLD.png", + "华语剧": "https://www.mxdyeah.top/static/tvlogo/华语剧.png", + "华语影院": "https://www.mxdyeah.top/static/tvlogo/华语影院.png", + "华阴": "https://www.mxdyeah.top/static/tvlogo/华阴.png", + "南京": "https://www.mxdyeah.top/static/tvlogo/南京.png", + "南京信息": "https://www.mxdyeah.top/static/tvlogo/南京信息.png", + "南京十八": "https://www.mxdyeah.top/static/tvlogo/南京十八.png", + "南京娱乐": "https://www.mxdyeah.top/static/tvlogo/南京娱乐.png", + "南国都市": "https://www.mxdyeah.top/static/tvlogo/南国都市.png", + "南宁公共": "https://www.mxdyeah.top/static/tvlogo/南宁公共.png", + "南宁影视娱乐": "https://www.mxdyeah.top/static/tvlogo/南宁影视娱乐.png", + "南宁文旅生活": "https://www.mxdyeah.top/static/tvlogo/南宁文旅生活.png", + "南宁新闻综合": "https://www.mxdyeah.top/static/tvlogo/南宁新闻综合.png", + "南平": "https://www.mxdyeah.top/static/tvlogo/南平.png", + "南平公共": "https://www.mxdyeah.top/static/tvlogo/南平公共.png", + "南平新闻": "https://www.mxdyeah.top/static/tvlogo/南平新闻.png", + "南方卫视": "https://www.mxdyeah.top/static/tvlogo/南方卫视.png", + "南方卫视2": "https://www.mxdyeah.top/static/tvlogo/南方卫视2.png", + "南方购物": "https://www.mxdyeah.top/static/tvlogo/南方购物.png", + "南昌公共": "https://www.mxdyeah.top/static/tvlogo/南昌公共.png", + "南昌新闻综合": "https://www.mxdyeah.top/static/tvlogo/南昌新闻综合.png", + "南昌资讯": "https://www.mxdyeah.top/static/tvlogo/南昌资讯.png", + "南昌都市": "https://www.mxdyeah.top/static/tvlogo/南昌都市.png", + "南靖": "https://www.mxdyeah.top/static/tvlogo/南靖.png", + "博斯无限": "https://www.mxdyeah.top/static/tvlogo/博斯无限.png", + "博斯无限2": "https://www.mxdyeah.top/static/tvlogo/博斯无限2.png", + "博斯无限二": "https://www.mxdyeah.top/static/tvlogo/博斯无限二.png", + "博斯网球": "https://www.mxdyeah.top/static/tvlogo/博斯网球.png", + "博斯运动1": "https://www.mxdyeah.top/static/tvlogo/博斯运动1.png", + "博斯运动2": "https://www.mxdyeah.top/static/tvlogo/博斯运动2.png", + "博斯运动一": "https://www.mxdyeah.top/static/tvlogo/博斯运动一.png", + "博斯运动二": "https://www.mxdyeah.top/static/tvlogo/博斯运动二.png", + "博斯高球": "https://www.mxdyeah.top/static/tvlogo/博斯高球.png", + "博斯高球1": "https://www.mxdyeah.top/static/tvlogo/博斯高球1.png", + "博斯高球2": "https://www.mxdyeah.top/static/tvlogo/博斯高球2.png", + "博斯高球二": "https://www.mxdyeah.top/static/tvlogo/博斯高球二.png", + "博斯魅力": "https://www.mxdyeah.top/static/tvlogo/博斯魅力.png", + "博斯魅力网": "https://www.mxdyeah.top/static/tvlogo/博斯魅力网.png", + "博罗": "https://www.mxdyeah.top/static/tvlogo/博罗.png", + "卡酷动画": "https://www.mxdyeah.top/static/tvlogo/卡酷动画.png", + "卡酷少儿": "https://www.mxdyeah.top/static/tvlogo/卡酷少儿.png", + "卫生健康": "https://www.mxdyeah.top/static/tvlogo/卫生健康.png", + "卫视中文": "https://www.mxdyeah.top/static/tvlogo/卫视中文.png", + "卫视体育": "https://www.mxdyeah.top/static/tvlogo/卫视体育.png", + "卫视卡式": "https://www.mxdyeah.top/static/tvlogo/卫视卡式.png", + "卫视合家欢": "https://www.mxdyeah.top/static/tvlogo/卫视合家欢.png", + "卫视国际电影": "https://www.mxdyeah.top/static/tvlogo/卫视国际电影.png", + "卫视电影": "https://www.mxdyeah.top/static/tvlogo/卫视电影.png", + "历史": "https://www.mxdyeah.top/static/tvlogo/历史.png", + "历史2": "https://www.mxdyeah.top/static/tvlogo/历史2.png", + "原住民": "https://www.mxdyeah.top/static/tvlogo/原住民.png", + "原住民族": "https://www.mxdyeah.top/static/tvlogo/原住民族.png", + "原住民电视": "https://www.mxdyeah.top/static/tvlogo/原住民电视.png", + "原声电影": "https://www.mxdyeah.top/static/tvlogo/原声电影.png", + "厦门": "https://www.mxdyeah.top/static/tvlogo/厦门.png", + "厦门1": "https://www.mxdyeah.top/static/tvlogo/厦门1.png", + "厦门2": "https://www.mxdyeah.top/static/tvlogo/厦门2.png", + "厦门3": "https://www.mxdyeah.top/static/tvlogo/厦门3.png", + "厦门4": "https://www.mxdyeah.top/static/tvlogo/厦门4.png", + "厦门一套": "https://www.mxdyeah.top/static/tvlogo/厦门一套.png", + "厦门三套": "https://www.mxdyeah.top/static/tvlogo/厦门三套.png", + "厦门二套": "https://www.mxdyeah.top/static/tvlogo/厦门二套.png", + "厦门卫视": "https://www.mxdyeah.top/static/tvlogo/厦门卫视.png", + "厦门影视": "https://www.mxdyeah.top/static/tvlogo/厦门影视.png", + "厦门海峡": "https://www.mxdyeah.top/static/tvlogo/厦门海峡.png", + "厦门生活": "https://www.mxdyeah.top/static/tvlogo/厦门生活.png", + "厦门移动": "https://www.mxdyeah.top/static/tvlogo/厦门移动.png", + "厦门综合": "https://www.mxdyeah.top/static/tvlogo/厦门综合.png", + "双子卫视": "https://www.mxdyeah.top/static/tvlogo/双子卫视.png", + "发现之旅": "https://www.mxdyeah.top/static/tvlogo/发现之旅.png", + "古典音乐": "https://www.mxdyeah.top/static/tvlogo/古典音乐.png", + "古装剧场": "https://www.mxdyeah.top/static/tvlogo/古装剧场.png", + "台湾戏剧": "https://www.mxdyeah.top/static/tvlogo/台湾戏剧.png", + "台湾综合": "https://www.mxdyeah.top/static/tvlogo/台湾综合.png", + "台湾艺术": "https://www.mxdyeah.top/static/tvlogo/台湾艺术.png", + "台视": "https://www.mxdyeah.top/static/tvlogo/台视.png", + "台视新闻": "https://www.mxdyeah.top/static/tvlogo/台视新闻.png", + "台视综合": "https://www.mxdyeah.top/static/tvlogo/台视综合.png", + "台视财经": "https://www.mxdyeah.top/static/tvlogo/台视财经.png", + "吉林乡村": "https://www.mxdyeah.top/static/tvlogo/吉林乡村.png", + "吉林公共新闻": "https://www.mxdyeah.top/static/tvlogo/吉林公共新闻.png", + "吉林卫视": "https://www.mxdyeah.top/static/tvlogo/吉林卫视.png", + "吉林延边卫视": "https://www.mxdyeah.top/static/tvlogo/吉林延边卫视.png", + "吉林影视": "https://www.mxdyeah.top/static/tvlogo/吉林影视.png", + "吉林生活": "https://www.mxdyeah.top/static/tvlogo/吉林生活.png", + "吉林篮球": "https://www.mxdyeah.top/static/tvlogo/吉林篮球.png", + "吉林综艺文化": "https://www.mxdyeah.top/static/tvlogo/吉林综艺文化.png", + "吉林都市": "https://www.mxdyeah.top/static/tvlogo/吉林都市.png", + "同安": "https://www.mxdyeah.top/static/tvlogo/同安.png", + "吴江新闻": "https://www.mxdyeah.top/static/tvlogo/吴江新闻.png", + "周宁": "https://www.mxdyeah.top/static/tvlogo/周宁.png", + "周至": "https://www.mxdyeah.top/static/tvlogo/周至.png", + "呼伦贝尔": "https://www.mxdyeah.top/static/tvlogo/呼伦贝尔.png", + "呼伦贝尔文化旅游": "https://www.mxdyeah.top/static/tvlogo/呼伦贝尔文化旅游.png", + "呼伦贝尔新闻综合": "https://www.mxdyeah.top/static/tvlogo/呼伦贝尔新闻综合.png", + "呼伦贝尔生活资讯": "https://www.mxdyeah.top/static/tvlogo/呼伦贝尔生活资讯.png", + "呼和浩特": "https://www.mxdyeah.top/static/tvlogo/呼和浩特.png", + "呼和浩特影视娱乐": "https://www.mxdyeah.top/static/tvlogo/呼和浩特影视娱乐.png", + "呼和浩特新闻综合": "https://www.mxdyeah.top/static/tvlogo/呼和浩特新闻综合.png", + "呼和浩特都市生活": "https://www.mxdyeah.top/static/tvlogo/呼和浩特都市生活.png", + "咪咕": "https://www.mxdyeah.top/static/tvlogo/咪咕.png", + "咪咕体育": "https://www.mxdyeah.top/static/tvlogo/咪咕体育.png", + "咪咕视频": "https://www.mxdyeah.top/static/tvlogo/咪咕视频.png", + "咪咕音乐": "https://www.mxdyeah.top/static/tvlogo/咪咕音乐.png", + "咸阳": "https://www.mxdyeah.top/static/tvlogo/咸阳.png", + "咸阳教育": "https://www.mxdyeah.top/static/tvlogo/咸阳教育.png", + "哈哈炫动": "https://www.mxdyeah.top/static/tvlogo/哈哈炫动.png", + "哈尔滨娱乐": "https://www.mxdyeah.top/static/tvlogo/哈尔滨娱乐.png", + "哈尔滨少儿": "https://www.mxdyeah.top/static/tvlogo/哈尔滨少儿.png", + "哈尔滨影视": "https://www.mxdyeah.top/static/tvlogo/哈尔滨影视.png", + "哈尔滨新闻综合": "https://www.mxdyeah.top/static/tvlogo/哈尔滨新闻综合.png", + "哈尔滨生活": "https://www.mxdyeah.top/static/tvlogo/哈尔滨生活.png", + "哈尔滨都市资讯": "https://www.mxdyeah.top/static/tvlogo/哈尔滨都市资讯.png", + "哈语新闻综合": "https://www.mxdyeah.top/static/tvlogo/哈语新闻综合.png", + "哈语综艺": "https://www.mxdyeah.top/static/tvlogo/哈语综艺.png", + "哒啵电竞": "https://www.mxdyeah.top/static/tvlogo/哒啵电竞.png", + "哒啵赛事": "https://www.mxdyeah.top/static/tvlogo/哒啵赛事.png", + "唯心电视": "https://www.mxdyeah.top/static/tvlogo/唯心电视.png", + "商洛": "https://www.mxdyeah.top/static/tvlogo/商洛.png", + "喀秋莎": "https://www.mxdyeah.top/static/tvlogo/喀秋莎.png", + "喜剧影院": "https://www.mxdyeah.top/static/tvlogo/喜剧影院.png", + "喜剧联盟": "https://www.mxdyeah.top/static/tvlogo/喜剧联盟.png", + "喜粤TV": "https://www.mxdyeah.top/static/tvlogo/喜粤TV.png", + "嘉佳卡通": "https://www.mxdyeah.top/static/tvlogo/嘉佳卡通.png", + "嘉兴公共": "https://www.mxdyeah.top/static/tvlogo/嘉兴公共.png", + "嘉祥新闻": "https://www.mxdyeah.top/static/tvlogo/嘉祥新闻.png", + "四川万源": "https://www.mxdyeah.top/static/tvlogo/四川万源.png", + "四川三台": "https://www.mxdyeah.top/static/tvlogo/四川三台.png", + "四川乐山": "https://www.mxdyeah.top/static/tvlogo/四川乐山.png", + "四川乐至": "https://www.mxdyeah.top/static/tvlogo/四川乐至.png", + "四川乡村": "https://www.mxdyeah.top/static/tvlogo/四川乡村.png", + "四川五通桥": "https://www.mxdyeah.top/static/tvlogo/四川五通桥.png", + "四川仁和": "https://www.mxdyeah.top/static/tvlogo/四川仁和.png", + "四川仪陇": "https://www.mxdyeah.top/static/tvlogo/四川仪陇.png", + "四川兴文": "https://www.mxdyeah.top/static/tvlogo/四川兴文.png", + "四川凉山": "https://www.mxdyeah.top/static/tvlogo/四川凉山.png", + "四川利州": "https://www.mxdyeah.top/static/tvlogo/四川利州.png", + "四川剑阁": "https://www.mxdyeah.top/static/tvlogo/四川剑阁.png", + "四川北川": "https://www.mxdyeah.top/static/tvlogo/四川北川.png", + "四川南充": "https://www.mxdyeah.top/static/tvlogo/四川南充.png", + "四川南江": "https://www.mxdyeah.top/static/tvlogo/四川南江.png", + "四川南溪": "https://www.mxdyeah.top/static/tvlogo/四川南溪.png", + "四川卫视": "https://www.mxdyeah.top/static/tvlogo/四川卫视.png", + "四川叙州": "https://www.mxdyeah.top/static/tvlogo/四川叙州.png", + "四川古蔺": "https://www.mxdyeah.top/static/tvlogo/四川古蔺.png", + "四川名山": "https://www.mxdyeah.top/static/tvlogo/四川名山.png", + "四川大英": "https://www.mxdyeah.top/static/tvlogo/四川大英.png", + "四川大邑": "https://www.mxdyeah.top/static/tvlogo/四川大邑.png", + "四川天全": "https://www.mxdyeah.top/static/tvlogo/四川天全.png", + "四川夹江": "https://www.mxdyeah.top/static/tvlogo/四川夹江.png", + "四川妇女儿童": "https://www.mxdyeah.top/static/tvlogo/四川妇女儿童.png", + "四川安岳综合": "https://www.mxdyeah.top/static/tvlogo/四川安岳综合.png", + "四川安州综合": "https://www.mxdyeah.top/static/tvlogo/四川安州综合.png", + "四川宜宾": "https://www.mxdyeah.top/static/tvlogo/四川宜宾.png", + "四川宝兴": "https://www.mxdyeah.top/static/tvlogo/四川宝兴.png", + "四川宣汉": "https://www.mxdyeah.top/static/tvlogo/四川宣汉.png", + "四川屏山": "https://www.mxdyeah.top/static/tvlogo/四川屏山.png", + "四川岳池": "https://www.mxdyeah.top/static/tvlogo/四川岳池.png", + "四川峨眉": "https://www.mxdyeah.top/static/tvlogo/四川峨眉.png", + "四川峨眉电影": "https://www.mxdyeah.top/static/tvlogo/四川峨眉电影.png", + "四川峨边": "https://www.mxdyeah.top/static/tvlogo/四川峨边.png", + "四川崇州": "https://www.mxdyeah.top/static/tvlogo/四川崇州.png", + "四川巴中": "https://www.mxdyeah.top/static/tvlogo/四川巴中.png", + "四川巴州": "https://www.mxdyeah.top/static/tvlogo/四川巴州.png", + "四川平昌": "https://www.mxdyeah.top/static/tvlogo/四川平昌.png", + "四川平武": "https://www.mxdyeah.top/static/tvlogo/四川平武.png", + "四川广元": "https://www.mxdyeah.top/static/tvlogo/四川广元.png", + "四川开江": "https://www.mxdyeah.top/static/tvlogo/四川开江.png", + "四川彭山": "https://www.mxdyeah.top/static/tvlogo/四川彭山.png", + "四川彭州": "https://www.mxdyeah.top/static/tvlogo/四川彭州.png", + "四川影视文艺": "https://www.mxdyeah.top/static/tvlogo/四川影视文艺.png", + "四川德阳": "https://www.mxdyeah.top/static/tvlogo/四川德阳.png", + "四川恩阳": "https://www.mxdyeah.top/static/tvlogo/四川恩阳.png", + "四川攀枝花": "https://www.mxdyeah.top/static/tvlogo/四川攀枝花.png", + "四川攀钢新闻": "https://www.mxdyeah.top/static/tvlogo/四川攀钢新闻.png", + "四川文化旅游": "https://www.mxdyeah.top/static/tvlogo/四川文化旅游.png", + "四川新津": "https://www.mxdyeah.top/static/tvlogo/四川新津.png", + "四川新都": "https://www.mxdyeah.top/static/tvlogo/四川新都.png", + "四川新闻": "https://www.mxdyeah.top/static/tvlogo/四川新闻.png", + "四川旌阳": "https://www.mxdyeah.top/static/tvlogo/四川旌阳.png", + "四川旺苍": "https://www.mxdyeah.top/static/tvlogo/四川旺苍.png", + "四川昭化": "https://www.mxdyeah.top/static/tvlogo/四川昭化.png", + "四川朝天": "https://www.mxdyeah.top/static/tvlogo/四川朝天.png", + "四川木里": "https://www.mxdyeah.top/static/tvlogo/四川木里.png", + "四川松潘": "https://www.mxdyeah.top/static/tvlogo/四川松潘.png", + "四川梓潼": "https://www.mxdyeah.top/static/tvlogo/四川梓潼.png", + "四川沐川": "https://www.mxdyeah.top/static/tvlogo/四川沐川.png", + "四川沙湾融媒体": "https://www.mxdyeah.top/static/tvlogo/四川沙湾融媒体.png", + "四川泸定": "https://www.mxdyeah.top/static/tvlogo/四川泸定.png", + "四川洪雅": "https://www.mxdyeah.top/static/tvlogo/四川洪雅.png", + "四川渠县": "https://www.mxdyeah.top/static/tvlogo/四川渠县.png", + "四川温江": "https://www.mxdyeah.top/static/tvlogo/四川温江.png", + "四川珙县": "https://www.mxdyeah.top/static/tvlogo/四川珙县.png", + "四川甘孜": "https://www.mxdyeah.top/static/tvlogo/四川甘孜.png", + "四川盐边": "https://www.mxdyeah.top/static/tvlogo/四川盐边.png", + "四川眉山": "https://www.mxdyeah.top/static/tvlogo/四川眉山.png", + "四川科教": "https://www.mxdyeah.top/static/tvlogo/四川科教.png", + "四川筠连": "https://www.mxdyeah.top/static/tvlogo/四川筠连.png", + "四川米易": "https://www.mxdyeah.top/static/tvlogo/四川米易.png", + "四川精品导视": "https://www.mxdyeah.top/static/tvlogo/四川精品导视.png", + "四川经济": "https://www.mxdyeah.top/static/tvlogo/四川经济.png", + "四川绵阳": "https://www.mxdyeah.top/static/tvlogo/四川绵阳.png", + "四川自贡": "https://www.mxdyeah.top/static/tvlogo/四川自贡.png", + "四川芦山": "https://www.mxdyeah.top/static/tvlogo/四川芦山.png", + "四川苍溪": "https://www.mxdyeah.top/static/tvlogo/四川苍溪.png", + "四川荣县": "https://www.mxdyeah.top/static/tvlogo/四川荣县.png", + "四川荥经": "https://www.mxdyeah.top/static/tvlogo/四川荥经.png", + "四川营山": "https://www.mxdyeah.top/static/tvlogo/四川营山.png", + "四川蒲江": "https://www.mxdyeah.top/static/tvlogo/四川蒲江.png", + "四川蓬溪": "https://www.mxdyeah.top/static/tvlogo/四川蓬溪.png", + "四川西充": "https://www.mxdyeah.top/static/tvlogo/四川西充.png", + "四川西昌": "https://www.mxdyeah.top/static/tvlogo/四川西昌.png", + "四川资中": "https://www.mxdyeah.top/static/tvlogo/四川资中.png", + "四川资阳": "https://www.mxdyeah.top/static/tvlogo/四川资阳.png", + "四川越西": "https://www.mxdyeah.top/static/tvlogo/四川越西.png", + "四川达川": "https://www.mxdyeah.top/static/tvlogo/四川达川.png", + "四川达州": "https://www.mxdyeah.top/static/tvlogo/四川达州.png", + "四川通江": "https://www.mxdyeah.top/static/tvlogo/四川通江.png", + "四川遂宁": "https://www.mxdyeah.top/static/tvlogo/四川遂宁.png", + "四川郫县": "https://www.mxdyeah.top/static/tvlogo/四川郫县.png", + "四川金堂": "https://www.mxdyeah.top/static/tvlogo/四川金堂.png", + "四川长宁": "https://www.mxdyeah.top/static/tvlogo/四川长宁.png", + "四川阆中": "https://www.mxdyeah.top/static/tvlogo/四川阆中.png", + "四川阿坝州": "https://www.mxdyeah.top/static/tvlogo/四川阿坝州.png", + "四川隆昌": "https://www.mxdyeah.top/static/tvlogo/四川隆昌.png", + "四川雁江": "https://www.mxdyeah.top/static/tvlogo/四川雁江.png", + "四川雅安": "https://www.mxdyeah.top/static/tvlogo/四川雅安.png", + "四川青白江": "https://www.mxdyeah.top/static/tvlogo/四川青白江.png", + "四川青神": "https://www.mxdyeah.top/static/tvlogo/四川青神.png", + "四川马边": "https://www.mxdyeah.top/static/tvlogo/四川马边.png", + "四川高县": "https://www.mxdyeah.top/static/tvlogo/四川高县.png", + "四海钓鱼": "https://www.mxdyeah.top/static/tvlogo/四海钓鱼.png", + "国会频道1": "https://www.mxdyeah.top/static/tvlogo/国会频道1.png", + "国会频道2": "https://www.mxdyeah.top/static/tvlogo/国会频道2.png", + "国兴卫视": "https://www.mxdyeah.top/static/tvlogo/国兴卫视.png", + "国剧修复": "https://www.mxdyeah.top/static/tvlogo/国剧修复.png", + "国学": "https://www.mxdyeah.top/static/tvlogo/国学.png", + "国家地理": "https://www.mxdyeah.top/static/tvlogo/国家地理.png", + "国家地理悠人": "https://www.mxdyeah.top/static/tvlogo/国家地理悠人.png", + "国家地理野生": "https://www.mxdyeah.top/static/tvlogo/国家地理野生.png", + "城固": "https://www.mxdyeah.top/static/tvlogo/城固.png", + "增城": "https://www.mxdyeah.top/static/tvlogo/增城.png", + "壹新闻": "https://www.mxdyeah.top/static/tvlogo/壹新闻.png", + "壹电影": "https://www.mxdyeah.top/static/tvlogo/壹电影.png", + "壹电视新闻": "https://www.mxdyeah.top/static/tvlogo/壹电视新闻.png", + "壹电视电影": "https://www.mxdyeah.top/static/tvlogo/壹电视电影.png", + "壹电视综合": "https://www.mxdyeah.top/static/tvlogo/壹电视综合.png", + "壹综合": "https://www.mxdyeah.top/static/tvlogo/壹综合.png", + "壹视综合": "https://www.mxdyeah.top/static/tvlogo/壹视综合.png", + "壹视财经": "https://www.mxdyeah.top/static/tvlogo/壹视财经.png", + "外汇理财": "https://www.mxdyeah.top/static/tvlogo/外汇理财.png", + "大湾区卫视": "https://www.mxdyeah.top/static/tvlogo/大湾区卫视.png", + "大爱": "https://www.mxdyeah.top/static/tvlogo/大爱.png", + "大爱1": "https://www.mxdyeah.top/static/tvlogo/大爱1.png", + "大爱2": "https://www.mxdyeah.top/static/tvlogo/大爱2.png", + "大爱一": "https://www.mxdyeah.top/static/tvlogo/大爱一.png", + "大爱二": "https://www.mxdyeah.top/static/tvlogo/大爱二.png", + "大爱海外": "https://www.mxdyeah.top/static/tvlogo/大爱海外.png", + "大爱电视": "https://www.mxdyeah.top/static/tvlogo/大爱电视.png", + "大立": "https://www.mxdyeah.top/static/tvlogo/大立.png", + "大立电视": "https://www.mxdyeah.top/static/tvlogo/大立电视.png", + "大美贵州": "https://www.mxdyeah.top/static/tvlogo/大美贵州.png", + "大连公共": "https://www.mxdyeah.top/static/tvlogo/大连公共.png", + "大连少儿": "https://www.mxdyeah.top/static/tvlogo/大连少儿.png", + "大连影视": "https://www.mxdyeah.top/static/tvlogo/大连影视.png", + "大连文体": "https://www.mxdyeah.top/static/tvlogo/大连文体.png", + "大连新闻综合": "https://www.mxdyeah.top/static/tvlogo/大连新闻综合.png", + "大连生活": "https://www.mxdyeah.top/static/tvlogo/大连生活.png", + "大连财经": "https://www.mxdyeah.top/static/tvlogo/大连财经.png", + "天下足球": "https://www.mxdyeah.top/static/tvlogo/天下足球.png", + "天元围棋": "https://www.mxdyeah.top/static/tvlogo/天元围棋.png", + "天天": "https://www.mxdyeah.top/static/tvlogo/天天.png", + "天天电视": "https://www.mxdyeah.top/static/tvlogo/天天电视.png", + "天映": "https://www.mxdyeah.top/static/tvlogo/天映.png", + "天映经典": "https://www.mxdyeah.top/static/tvlogo/天映经典.png", + "天津IPTV": "https://www.mxdyeah.top/static/tvlogo/天津IPTV.png", + "天津体育": "https://www.mxdyeah.top/static/tvlogo/天津体育.png", + "天津卫视": "https://www.mxdyeah.top/static/tvlogo/天津卫视.png", + "天津少儿": "https://www.mxdyeah.top/static/tvlogo/天津少儿.png", + "天津影视": "https://www.mxdyeah.top/static/tvlogo/天津影视.png", + "天津教育": "https://www.mxdyeah.top/static/tvlogo/天津教育.png", + "天津文艺": "https://www.mxdyeah.top/static/tvlogo/天津文艺.png", + "天津新闻": "https://www.mxdyeah.top/static/tvlogo/天津新闻.png", + "天津都市": "https://www.mxdyeah.top/static/tvlogo/天津都市.png", + "天美丽": "https://www.mxdyeah.top/static/tvlogo/天美丽.png", + "天良电视": "https://www.mxdyeah.top/static/tvlogo/天良电视.png", + "天良综合": "https://www.mxdyeah.top/static/tvlogo/天良综合.png", + "太原": "https://www.mxdyeah.top/static/tvlogo/太原.png", + "太白": "https://www.mxdyeah.top/static/tvlogo/太白.png", + "央广健康": "https://www.mxdyeah.top/static/tvlogo/央广健康.png", + "央广购物": "https://www.mxdyeah.top/static/tvlogo/央广购物.png", + "央视台球": "https://www.mxdyeah.top/static/tvlogo/央视台球.png", + "央视文化精品": "https://www.mxdyeah.top/static/tvlogo/央视文化精品.png", + "央视新闻": "https://www.mxdyeah.top/static/tvlogo/央视新闻.png", + "央视春晚": "https://www.mxdyeah.top/static/tvlogo/央视春晚.png", + "央视精品": "https://www.mxdyeah.top/static/tvlogo/央视精品.png", + "央视高网": "https://www.mxdyeah.top/static/tvlogo/央视高网.png", + "奇妙电视": "https://www.mxdyeah.top/static/tvlogo/奇妙电视.png", + "女性时尚": "https://www.mxdyeah.top/static/tvlogo/女性时尚.png", + "好享购物": "https://www.mxdyeah.top/static/tvlogo/好享购物.png", + "好消息": "https://www.mxdyeah.top/static/tvlogo/好消息.png", + "好消息1": "https://www.mxdyeah.top/static/tvlogo/好消息1.png", + "好消息2": "https://www.mxdyeah.top/static/tvlogo/好消息2.png", + "好莱坞电影": "https://www.mxdyeah.top/static/tvlogo/好莱坞电影.png", + "始兴": "https://www.mxdyeah.top/static/tvlogo/始兴.png", + "威达超舜": "https://www.mxdyeah.top/static/tvlogo/威达超舜.png", + "娱乐新闻": "https://www.mxdyeah.top/static/tvlogo/娱乐新闻.png", + "子洲": "https://www.mxdyeah.top/static/tvlogo/子洲.png", + "宁化": "https://www.mxdyeah.top/static/tvlogo/宁化.png", + "宁夏公共": "https://www.mxdyeah.top/static/tvlogo/宁夏公共.png", + "宁夏卫视": "https://www.mxdyeah.top/static/tvlogo/宁夏卫视.png", + "宁夏少儿": "https://www.mxdyeah.top/static/tvlogo/宁夏少儿.png", + "宁夏影视": "https://www.mxdyeah.top/static/tvlogo/宁夏影视.png", + "宁夏经济": "https://www.mxdyeah.top/static/tvlogo/宁夏经济.png", + "宁德": "https://www.mxdyeah.top/static/tvlogo/宁德.png", + "宁德公共": "https://www.mxdyeah.top/static/tvlogo/宁德公共.png", + "宁德新闻": "https://www.mxdyeah.top/static/tvlogo/宁德新闻.png", + "宁波影视剧": "https://www.mxdyeah.top/static/tvlogo/宁波影视剧.png", + "宁波新闻综合": "https://www.mxdyeah.top/static/tvlogo/宁波新闻综合.png", + "宁波经济生活": "https://www.mxdyeah.top/static/tvlogo/宁波经济生活.png", + "宁波都市文体": "https://www.mxdyeah.top/static/tvlogo/宁波都市文体.png", + "宁陕": "https://www.mxdyeah.top/static/tvlogo/宁陕.png", + "安多卫视": "https://www.mxdyeah.top/static/tvlogo/安多卫视.png", + "安康": "https://www.mxdyeah.top/static/tvlogo/安康.png", + "安徽": "https://www.mxdyeah.top/static/tvlogo/安徽.png", + "安徽公共": "https://www.mxdyeah.top/static/tvlogo/安徽公共.png", + "安徽农业科教": "https://www.mxdyeah.top/static/tvlogo/安徽农业科教.png", + "安徽卫视": "https://www.mxdyeah.top/static/tvlogo/安徽卫视.png", + "安徽国际": "https://www.mxdyeah.top/static/tvlogo/安徽国际.png", + "安徽影视": "https://www.mxdyeah.top/static/tvlogo/安徽影视.png", + "安徽科教": "https://www.mxdyeah.top/static/tvlogo/安徽科教.png", + "安徽移动": "https://www.mxdyeah.top/static/tvlogo/安徽移动.png", + "安徽经济生活": "https://www.mxdyeah.top/static/tvlogo/安徽经济生活.png", + "安徽经视": "https://www.mxdyeah.top/static/tvlogo/安徽经视.png", + "安徽综艺": "https://www.mxdyeah.top/static/tvlogo/安徽综艺.png", + "安徽综艺体育": "https://www.mxdyeah.top/static/tvlogo/安徽综艺体育.png", + "安顺综合": "https://www.mxdyeah.top/static/tvlogo/安顺综合.png", + "宜昌综合": "https://www.mxdyeah.top/static/tvlogo/宜昌综合.png", + "宜春": "https://www.mxdyeah.top/static/tvlogo/宜春.png", + "宝鸡公共": "https://www.mxdyeah.top/static/tvlogo/宝鸡公共.png", + "宝鸡综合": "https://www.mxdyeah.top/static/tvlogo/宝鸡综合.png", + "客家": "https://www.mxdyeah.top/static/tvlogo/客家.png", + "客家电视": "https://www.mxdyeah.top/static/tvlogo/客家电视.png", + "家家购物": "https://www.mxdyeah.top/static/tvlogo/家家购物.png", + "家庭剧场": "https://www.mxdyeah.top/static/tvlogo/家庭剧场.png", + "家庭影院": "https://www.mxdyeah.top/static/tvlogo/家庭影院.png", + "家庭理财": "https://www.mxdyeah.top/static/tvlogo/家庭理财.png", + "家政": "https://www.mxdyeah.top/static/tvlogo/家政.png", + "家有购物": "https://www.mxdyeah.top/static/tvlogo/家有购物.png", + "富立": "https://www.mxdyeah.top/static/tvlogo/富立.png", + "寰宇HD综合": "https://www.mxdyeah.top/static/tvlogo/寰宇HD综合.png", + "寰宇新闻": "https://www.mxdyeah.top/static/tvlogo/寰宇新闻.png", + "寰宇新闻2": "https://www.mxdyeah.top/static/tvlogo/寰宇新闻2.png", + "寰宇新闻台湾": "https://www.mxdyeah.top/static/tvlogo/寰宇新闻台湾.png", + "寰宇综合": "https://www.mxdyeah.top/static/tvlogo/寰宇综合.png", + "寰宇财经": "https://www.mxdyeah.top/static/tvlogo/寰宇财经.png", + "寿宁": "https://www.mxdyeah.top/static/tvlogo/寿宁.png", + "小说改编": "https://www.mxdyeah.top/static/tvlogo/小说改编.png", + "少儿": "https://www.mxdyeah.top/static/tvlogo/少儿.png", + "少儿动漫": "https://www.mxdyeah.top/static/tvlogo/少儿动漫.png", + "少儿动画": "https://www.mxdyeah.top/static/tvlogo/少儿动画.png", + "尤溪": "https://www.mxdyeah.top/static/tvlogo/尤溪.png", + "屏南": "https://www.mxdyeah.top/static/tvlogo/屏南.png", + "山东体育": "https://www.mxdyeah.top/static/tvlogo/山东体育.png", + "山东公共": "https://www.mxdyeah.top/static/tvlogo/山东公共.png", + "山东农科": "https://www.mxdyeah.top/static/tvlogo/山东农科.png", + "山东卫视": "https://www.mxdyeah.top/static/tvlogo/山东卫视.png", + "山东少儿": "https://www.mxdyeah.top/static/tvlogo/山东少儿.png", + "山东影视": "https://www.mxdyeah.top/static/tvlogo/山东影视.png", + "山东教育": "https://www.mxdyeah.top/static/tvlogo/山东教育.png", + "山东教育卫视": "https://www.mxdyeah.top/static/tvlogo/山东教育卫视.png", + "山东文旅": "https://www.mxdyeah.top/static/tvlogo/山东文旅.png", + "山东新闻": "https://www.mxdyeah.top/static/tvlogo/山东新闻.png", + "山东生活": "https://www.mxdyeah.top/static/tvlogo/山东生活.png", + "山东综艺": "https://www.mxdyeah.top/static/tvlogo/山东综艺.png", + "山东齐鲁": "https://www.mxdyeah.top/static/tvlogo/山东齐鲁.png", + "山西公共": "https://www.mxdyeah.top/static/tvlogo/山西公共.png", + "山西卫视": "https://www.mxdyeah.top/static/tvlogo/山西卫视.png", + "山西影视": "https://www.mxdyeah.top/static/tvlogo/山西影视.png", + "山西文体生活": "https://www.mxdyeah.top/static/tvlogo/山西文体生活.png", + "山西社会与法治": "https://www.mxdyeah.top/static/tvlogo/山西社会与法治.png", + "山西社会法治": "https://www.mxdyeah.top/static/tvlogo/山西社会法治.png", + "山西经济": "https://www.mxdyeah.top/static/tvlogo/山西经济.png", + "山西经济与科技": "https://www.mxdyeah.top/static/tvlogo/山西经济与科技.png", + "山西经济科技": "https://www.mxdyeah.top/static/tvlogo/山西经济科技.png", + "山西黄河": "https://www.mxdyeah.top/static/tvlogo/山西黄河.png", + "岐山": "https://www.mxdyeah.top/static/tvlogo/岐山.png", + "岚皋": "https://www.mxdyeah.top/static/tvlogo/岚皋.png", + "岭南戏曲": "https://www.mxdyeah.top/static/tvlogo/岭南戏曲.png", + "峨嵋电影": "https://www.mxdyeah.top/static/tvlogo/峨嵋电影.png", + "峨眉山综合": "https://www.mxdyeah.top/static/tvlogo/峨眉山综合.png", + "峨眉电影": "https://www.mxdyeah.top/static/tvlogo/峨眉电影.png", + "峨眉电影4K": "https://www.mxdyeah.top/static/tvlogo/峨眉电影4K.png", + "巴中公共": "https://www.mxdyeah.top/static/tvlogo/巴中公共.png", + "巴中综合": "https://www.mxdyeah.top/static/tvlogo/巴中综合.png", + "巴州电视": "https://www.mxdyeah.top/static/tvlogo/巴州电视.png", + "巴彦淖尔影视娱乐": "https://www.mxdyeah.top/static/tvlogo/巴彦淖尔影视娱乐.png", + "巴彦淖尔新闻综合": "https://www.mxdyeah.top/static/tvlogo/巴彦淖尔新闻综合.png", + "巴彦淖尔经济生活": "https://www.mxdyeah.top/static/tvlogo/巴彦淖尔经济生活.png", + "希望电视": "https://www.mxdyeah.top/static/tvlogo/希望电视.png", + "平和": "https://www.mxdyeah.top/static/tvlogo/平和.png", + "平昌综合": "https://www.mxdyeah.top/static/tvlogo/平昌综合.png", + "平潭": "https://www.mxdyeah.top/static/tvlogo/平潭.png", + "平远": "https://www.mxdyeah.top/static/tvlogo/平远.png", + "年代ERANEWSHD": "https://www.mxdyeah.top/static/tvlogo/年代ERANEWSHD.png", + "年代MUCH": "https://www.mxdyeah.top/static/tvlogo/年代MUCH.png", + "年代新闻": "https://www.mxdyeah.top/static/tvlogo/年代新闻.png", + "年代新闻HD": "https://www.mxdyeah.top/static/tvlogo/年代新闻HD.png", + "幸福娱乐": "https://www.mxdyeah.top/static/tvlogo/幸福娱乐.png", + "幸福彩": "https://www.mxdyeah.top/static/tvlogo/幸福彩.png", + "幸福空间居家": "https://www.mxdyeah.top/static/tvlogo/幸福空间居家.png", + "幼儿教育": "https://www.mxdyeah.top/static/tvlogo/幼儿教育.png", + "广东4K": "https://www.mxdyeah.top/static/tvlogo/广东4K.png", + "广东4K超高清": "https://www.mxdyeah.top/static/tvlogo/广东4K超高清.png", + "广东体育": "https://www.mxdyeah.top/static/tvlogo/广东体育.png", + "广东公共": "https://www.mxdyeah.top/static/tvlogo/广东公共.png", + "广东南方卫视": "https://www.mxdyeah.top/static/tvlogo/广东南方卫视.png", + "广东卫视": "https://www.mxdyeah.top/static/tvlogo/广东卫视.png", + "广东卫视NAME版": "https://www.mxdyeah.top/static/tvlogo/广东卫视NAME版.png", + "广东嘉佳卡通": "https://www.mxdyeah.top/static/tvlogo/广东嘉佳卡通.png", + "广东国际": "https://www.mxdyeah.top/static/tvlogo/广东国际.png", + "广东导视": "https://www.mxdyeah.top/static/tvlogo/广东导视.png", + "广东少儿": "https://www.mxdyeah.top/static/tvlogo/广东少儿.png", + "广东广电": "https://www.mxdyeah.top/static/tvlogo/广东广电.png", + "广东影视": "https://www.mxdyeah.top/static/tvlogo/广东影视.png", + "广东房产": "https://www.mxdyeah.top/static/tvlogo/广东房产.png", + "广东新闻": "https://www.mxdyeah.top/static/tvlogo/广东新闻.png", + "广东民生": "https://www.mxdyeah.top/static/tvlogo/广东民生.png", + "广东现代教育": "https://www.mxdyeah.top/static/tvlogo/广东现代教育.png", + "广东珠江": "https://www.mxdyeah.top/static/tvlogo/广东珠江.png", + "广东移动": "https://www.mxdyeah.top/static/tvlogo/广东移动.png", + "广东经济": "https://www.mxdyeah.top/static/tvlogo/广东经济.png", + "广东经济科教": "https://www.mxdyeah.top/static/tvlogo/广东经济科教.png", + "广东综艺": "https://www.mxdyeah.top/static/tvlogo/广东综艺.png", + "广州南国都市": "https://www.mxdyeah.top/static/tvlogo/广州南国都市.png", + "广州影视": "https://www.mxdyeah.top/static/tvlogo/广州影视.png", + "广州新闻": "https://www.mxdyeah.top/static/tvlogo/广州新闻.png", + "广州法治": "https://www.mxdyeah.top/static/tvlogo/广州法治.png", + "广州竞赛": "https://www.mxdyeah.top/static/tvlogo/广州竞赛.png", + "广州综合": "https://www.mxdyeah.top/static/tvlogo/广州综合.png", + "广电热播剧场": "https://www.mxdyeah.top/static/tvlogo/广电热播剧场.png", + "广西": "https://www.mxdyeah.top/static/tvlogo/广西.png", + "广西乐思购": "https://www.mxdyeah.top/static/tvlogo/广西乐思购.png", + "广西卫视": "https://www.mxdyeah.top/static/tvlogo/广西卫视.png", + "广西国际": "https://www.mxdyeah.top/static/tvlogo/广西国际.png", + "广西影视": "https://www.mxdyeah.top/static/tvlogo/广西影视.png", + "广西新闻": "https://www.mxdyeah.top/static/tvlogo/广西新闻.png", + "广西移动": "https://www.mxdyeah.top/static/tvlogo/广西移动.png", + "广西综艺": "https://www.mxdyeah.top/static/tvlogo/广西综艺.png", + "广西综艺旅游": "https://www.mxdyeah.top/static/tvlogo/广西综艺旅游.png", + "广西都市": "https://www.mxdyeah.top/static/tvlogo/广西都市.png", + "府谷": "https://www.mxdyeah.top/static/tvlogo/府谷.png", + "康巴卫视": "https://www.mxdyeah.top/static/tvlogo/康巴卫视.png", + "廉江": "https://www.mxdyeah.top/static/tvlogo/廉江.png", + "廉江综合": "https://www.mxdyeah.top/static/tvlogo/廉江综合.png", + "延安": "https://www.mxdyeah.top/static/tvlogo/延安.png", + "延边卫视": "https://www.mxdyeah.top/static/tvlogo/延边卫视.png", + "弈坛春秋": "https://www.mxdyeah.top/static/tvlogo/弈坛春秋.png", + "彩民在线": "https://www.mxdyeah.top/static/tvlogo/彩民在线.png", + "彩虹": "https://www.mxdyeah.top/static/tvlogo/彩虹.png", + "彩虹E": "https://www.mxdyeah.top/static/tvlogo/彩虹E.png", + "彩虹K": "https://www.mxdyeah.top/static/tvlogo/彩虹K.png", + "彩虹电影": "https://www.mxdyeah.top/static/tvlogo/彩虹电影.png", + "彬州": "https://www.mxdyeah.top/static/tvlogo/彬州.png", + "彭博财经": "https://www.mxdyeah.top/static/tvlogo/彭博财经.png", + "影迷数位电影": "https://www.mxdyeah.top/static/tvlogo/影迷数位电影.png", + "影迷数位纪实": "https://www.mxdyeah.top/static/tvlogo/影迷数位纪实.png", + "影迷电影": "https://www.mxdyeah.top/static/tvlogo/影迷电影.png", + "影迷纪实": "https://www.mxdyeah.top/static/tvlogo/影迷纪实.png", + "德阳公共": "https://www.mxdyeah.top/static/tvlogo/德阳公共.png", + "德阳新闻综合": "https://www.mxdyeah.top/static/tvlogo/德阳新闻综合.png", + "快乐垂钓": "https://www.mxdyeah.top/static/tvlogo/快乐垂钓.png", + "快乐购": "https://www.mxdyeah.top/static/tvlogo/快乐购.png", + "怀旧剧场": "https://www.mxdyeah.top/static/tvlogo/怀旧剧场.png", + "怀集": "https://www.mxdyeah.top/static/tvlogo/怀集.png", + "恩阳新闻": "https://www.mxdyeah.top/static/tvlogo/恩阳新闻.png", + "惠东": "https://www.mxdyeah.top/static/tvlogo/惠东.png", + "惠安": "https://www.mxdyeah.top/static/tvlogo/惠安.png", + "惠州一套": "https://www.mxdyeah.top/static/tvlogo/惠州一套.png", + "惠州二套": "https://www.mxdyeah.top/static/tvlogo/惠州二套.png", + "惠州公共": "https://www.mxdyeah.top/static/tvlogo/惠州公共.png", + "惠州综合": "https://www.mxdyeah.top/static/tvlogo/惠州综合.png", + "惠阳": "https://www.mxdyeah.top/static/tvlogo/惠阳.png", + "戏剧免费看1": "https://www.mxdyeah.top/static/tvlogo/戏剧免费看1.png", + "戏剧免费看2": "https://www.mxdyeah.top/static/tvlogo/戏剧免费看2.png", + "戏曲": "https://www.mxdyeah.top/static/tvlogo/戏曲.png", + "成都公共": "https://www.mxdyeah.top/static/tvlogo/成都公共.png", + "成都少儿": "https://www.mxdyeah.top/static/tvlogo/成都少儿.png", + "成都影视": "https://www.mxdyeah.top/static/tvlogo/成都影视.png", + "成都影视文艺": "https://www.mxdyeah.top/static/tvlogo/成都影视文艺.png", + "成都新闻综合": "https://www.mxdyeah.top/static/tvlogo/成都新闻综合.png", + "成都温江": "https://www.mxdyeah.top/static/tvlogo/成都温江.png", + "成都经济资讯": "https://www.mxdyeah.top/static/tvlogo/成都经济资讯.png", + "成都蓉城先锋": "https://www.mxdyeah.top/static/tvlogo/成都蓉城先锋.png", + "成都都市生活": "https://www.mxdyeah.top/static/tvlogo/成都都市生活.png", + "成都高新": "https://www.mxdyeah.top/static/tvlogo/成都高新.png", + "我的欧洲电影": "https://www.mxdyeah.top/static/tvlogo/我的欧洲电影.png", + "战旗直播": "https://www.mxdyeah.top/static/tvlogo/战旗直播.png", + "户外旅游": "https://www.mxdyeah.top/static/tvlogo/户外旅游.png", + "扶风": "https://www.mxdyeah.top/static/tvlogo/扶风.png", + "抚州": "https://www.mxdyeah.top/static/tvlogo/抚州.png", + "抚顺": "https://www.mxdyeah.top/static/tvlogo/抚顺.png", + "拉萨": "https://www.mxdyeah.top/static/tvlogo/拉萨.png", + "拉萨文旅": "https://www.mxdyeah.top/static/tvlogo/拉萨文旅.png", + "拉萨综合": "https://www.mxdyeah.top/static/tvlogo/拉萨综合.png", + "揭东": "https://www.mxdyeah.top/static/tvlogo/揭东.png", + "揭阳公共": "https://www.mxdyeah.top/static/tvlogo/揭阳公共.png", + "揭阳生活": "https://www.mxdyeah.top/static/tvlogo/揭阳生活.png", + "揭阳综合": "https://www.mxdyeah.top/static/tvlogo/揭阳综合.png", + "摄影": "https://www.mxdyeah.top/static/tvlogo/摄影.png", + "收藏天下": "https://www.mxdyeah.top/static/tvlogo/收藏天下.png", + "收视指南": "https://www.mxdyeah.top/static/tvlogo/收视指南.png", + "政和": "https://www.mxdyeah.top/static/tvlogo/政和.png", + "教育就业": "https://www.mxdyeah.top/static/tvlogo/教育就业.png", + "数码时代": "https://www.mxdyeah.top/static/tvlogo/数码时代.png", + "文化精品": "https://www.mxdyeah.top/static/tvlogo/文化精品.png", + "文山新闻综合": "https://www.mxdyeah.top/static/tvlogo/文山新闻综合.png", + "文物宝库": "https://www.mxdyeah.top/static/tvlogo/文物宝库.png", + "文登1": "https://www.mxdyeah.top/static/tvlogo/文登1.png", + "文登2": "https://www.mxdyeah.top/static/tvlogo/文登2.png", + "斗门": "https://www.mxdyeah.top/static/tvlogo/斗门.png", + "新会": "https://www.mxdyeah.top/static/tvlogo/新会.png", + "新余": "https://www.mxdyeah.top/static/tvlogo/新余.png", + "新加坡亚洲新闻": "https://www.mxdyeah.top/static/tvlogo/新加坡亚洲新闻.png", + "新动漫": "https://www.mxdyeah.top/static/tvlogo/新动漫.png", + "新华中文": "https://www.mxdyeah.top/static/tvlogo/新华中文.png", + "新华社中文": "https://www.mxdyeah.top/static/tvlogo/新华社中文.png", + "新华社英文": "https://www.mxdyeah.top/static/tvlogo/新华社英文.png", + "新唐人": "https://www.mxdyeah.top/static/tvlogo/新唐人.png", + "新唐人亚太": "https://www.mxdyeah.top/static/tvlogo/新唐人亚太.png", + "新天地民俗": "https://www.mxdyeah.top/static/tvlogo/新天地民俗.png", + "新娱乐": "https://www.mxdyeah.top/static/tvlogo/新娱乐.png", + "新片院": "https://www.mxdyeah.top/static/tvlogo/新片院.png", + "新疆体育": "https://www.mxdyeah.top/static/tvlogo/新疆体育.png", + "新疆体育健康": "https://www.mxdyeah.top/static/tvlogo/新疆体育健康.png", + "新疆卫视": "https://www.mxdyeah.top/static/tvlogo/新疆卫视.png", + "新疆少儿": "https://www.mxdyeah.top/static/tvlogo/新疆少儿.png", + "新疆汉语经济": "https://www.mxdyeah.top/static/tvlogo/新疆汉语经济.png", + "新疆汉语综艺": "https://www.mxdyeah.top/static/tvlogo/新疆汉语综艺.png", + "新科动漫": "https://www.mxdyeah.top/static/tvlogo/新科动漫.png", + "新罗": "https://www.mxdyeah.top/static/tvlogo/新罗.png", + "新视觉": "https://www.mxdyeah.top/static/tvlogo/新视觉.png", + "旅游卫视": "https://www.mxdyeah.top/static/tvlogo/旅游卫视.png", + "无线为食": "https://www.mxdyeah.top/static/tvlogo/无线为食.png", + "无线华语剧": "https://www.mxdyeah.top/static/tvlogo/无线华语剧.png", + "无线卫星亚洲": "https://www.mxdyeah.top/static/tvlogo/无线卫星亚洲.png", + "无线卫星新闻": "https://www.mxdyeah.top/static/tvlogo/无线卫星新闻.png", + "无线新闻": "https://www.mxdyeah.top/static/tvlogo/无线新闻.png", + "无线日剧": "https://www.mxdyeah.top/static/tvlogo/无线日剧.png", + "无线星河": "https://www.mxdyeah.top/static/tvlogo/无线星河.png", + "无线粤语片": "https://www.mxdyeah.top/static/tvlogo/无线粤语片.png", + "无线经典": "https://www.mxdyeah.top/static/tvlogo/无线经典.png", + "无线综艺": "https://www.mxdyeah.top/static/tvlogo/无线综艺.png", + "无线财经": "https://www.mxdyeah.top/static/tvlogo/无线财经.png", + "无线财经资讯": "https://www.mxdyeah.top/static/tvlogo/无线财经资讯.png", + "无线韩剧": "https://www.mxdyeah.top/static/tvlogo/无线韩剧.png", + "早期教育": "https://www.mxdyeah.top/static/tvlogo/早期教育.png", + "旬邑": "https://www.mxdyeah.top/static/tvlogo/旬邑.png", + "旬阳": "https://www.mxdyeah.top/static/tvlogo/旬阳.png", + "时代出行": "https://www.mxdyeah.top/static/tvlogo/时代出行.png", + "时代家居": "https://www.mxdyeah.top/static/tvlogo/时代家居.png", + "时代风尚": "https://www.mxdyeah.top/static/tvlogo/时代风尚.png", + "时光剧场": "https://www.mxdyeah.top/static/tvlogo/时光剧场.png", + "时尚购物": "https://www.mxdyeah.top/static/tvlogo/时尚购物.png", + "时尚运动X": "https://www.mxdyeah.top/static/tvlogo/时尚运动X.png", + "昆明影视综艺": "https://www.mxdyeah.top/static/tvlogo/昆明影视综艺.png", + "昆明新闻综合": "https://www.mxdyeah.top/static/tvlogo/昆明新闻综合.png", + "昆明春城民生": "https://www.mxdyeah.top/static/tvlogo/昆明春城民生.png", + "昆明科学教育": "https://www.mxdyeah.top/static/tvlogo/昆明科学教育.png", + "昆明经济生活": "https://www.mxdyeah.top/static/tvlogo/昆明经济生活.png", + "明溪": "https://www.mxdyeah.top/static/tvlogo/明溪.png", + "明珠": "https://www.mxdyeah.top/static/tvlogo/明珠.png", + "星卫HD电影": "https://www.mxdyeah.top/static/tvlogo/星卫HD电影.png", + "星卫娱乐": "https://www.mxdyeah.top/static/tvlogo/星卫娱乐.png", + "星卫电影": "https://www.mxdyeah.top/static/tvlogo/星卫电影.png", + "星影": "https://www.mxdyeah.top/static/tvlogo/星影.png", + "星空卫视": "https://www.mxdyeah.top/static/tvlogo/星空卫视.png", + "春晚": "https://www.mxdyeah.top/static/tvlogo/春晚.png", + "昭化综合": "https://www.mxdyeah.top/static/tvlogo/昭化综合.png", + "普陀": "https://www.mxdyeah.top/static/tvlogo/普陀.png", + "晴天动画": "https://www.mxdyeah.top/static/tvlogo/晴天动画.png", + "晴彩中原": "https://www.mxdyeah.top/static/tvlogo/晴彩中原.png", + "智林体育": "https://www.mxdyeah.top/static/tvlogo/智林体育.png", + "暖TV": "https://www.mxdyeah.top/static/tvlogo/暖TV.png", + "曼迪日本": "https://www.mxdyeah.top/static/tvlogo/曼迪日本.png", + "有线18": "https://www.mxdyeah.top/static/tvlogo/有线18.png", + "有线HD603": "https://www.mxdyeah.top/static/tvlogo/有线HD603.png", + "有线SPORTSPLUS1": "https://www.mxdyeah.top/static/tvlogo/有线SPORTSPLUS1.png", + "有线SPORTSPLUS2": "https://www.mxdyeah.top/static/tvlogo/有线SPORTSPLUS2.png", + "有线SPORTSPLUS3": "https://www.mxdyeah.top/static/tvlogo/有线SPORTSPLUS3.png", + "有线体育": "https://www.mxdyeah.top/static/tvlogo/有线体育.png", + "有线娱乐": "https://www.mxdyeah.top/static/tvlogo/有线娱乐.png", + "有线新闻": "https://www.mxdyeah.top/static/tvlogo/有线新闻.png", + "有线新闻直播": "https://www.mxdyeah.top/static/tvlogo/有线新闻直播.png", + "有线电影": "https://www.mxdyeah.top/static/tvlogo/有线电影.png", + "有线财经资讯": "https://www.mxdyeah.top/static/tvlogo/有线财经资讯.png", + "朝天综合": "https://www.mxdyeah.top/static/tvlogo/朝天综合.png", + "朝阳": "https://www.mxdyeah.top/static/tvlogo/朝阳.png", + "未来电视": "https://www.mxdyeah.top/static/tvlogo/未来电视.png", + "本溪": "https://www.mxdyeah.top/static/tvlogo/本溪.png", + "杭州导视": "https://www.mxdyeah.top/static/tvlogo/杭州导视.png", + "杭州少儿": "https://www.mxdyeah.top/static/tvlogo/杭州少儿.png", + "杭州影视": "https://www.mxdyeah.top/static/tvlogo/杭州影视.png", + "杭州明珠": "https://www.mxdyeah.top/static/tvlogo/杭州明珠.png", + "杭州生活": "https://www.mxdyeah.top/static/tvlogo/杭州生活.png", + "杭州移动": "https://www.mxdyeah.top/static/tvlogo/杭州移动.png", + "杭州综合": "https://www.mxdyeah.top/static/tvlogo/杭州综合.png", + "杭州西湖明珠": "https://www.mxdyeah.top/static/tvlogo/杭州西湖明珠.png", + "杭州青少体育": "https://www.mxdyeah.top/static/tvlogo/杭州青少体育.png", + "杭锦旗综合": "https://www.mxdyeah.top/static/tvlogo/杭锦旗综合.png", + "松溪": "https://www.mxdyeah.top/static/tvlogo/松溪.png", + "松视1": "https://www.mxdyeah.top/static/tvlogo/松视1.png", + "松视2": "https://www.mxdyeah.top/static/tvlogo/松视2.png", + "松视3": "https://www.mxdyeah.top/static/tvlogo/松视3.png", + "极速汽车": "https://www.mxdyeah.top/static/tvlogo/极速汽车.png", + "柘荣": "https://www.mxdyeah.top/static/tvlogo/柘荣.png", + "梅县": "https://www.mxdyeah.top/static/tvlogo/梅县.png", + "梅州1": "https://www.mxdyeah.top/static/tvlogo/梅州1.png", + "梅州客家生活": "https://www.mxdyeah.top/static/tvlogo/梅州客家生活.png", + "梅州导视": "https://www.mxdyeah.top/static/tvlogo/梅州导视.png", + "梅迪奇艺术": "https://www.mxdyeah.top/static/tvlogo/梅迪奇艺术.png", + "梦工厂动画": "https://www.mxdyeah.top/static/tvlogo/梦工厂动画.png", + "梧州公共": "https://www.mxdyeah.top/static/tvlogo/梧州公共.png", + "梧州教育生活": "https://www.mxdyeah.top/static/tvlogo/梧州教育生活.png", + "梧州新闻综合": "https://www.mxdyeah.top/static/tvlogo/梧州新闻综合.png", + "梨园": "https://www.mxdyeah.top/static/tvlogo/梨园.png", + "榆林": "https://www.mxdyeah.top/static/tvlogo/榆林.png", + "横山": "https://www.mxdyeah.top/static/tvlogo/横山.png", + "欢笑剧场": "https://www.mxdyeah.top/static/tvlogo/欢笑剧场.png", + "欢笑剧场4K": "https://www.mxdyeah.top/static/tvlogo/欢笑剧场4K.png", + "欢腾购物": "https://www.mxdyeah.top/static/tvlogo/欢腾购物.png", + "欧洲体育": "https://www.mxdyeah.top/static/tvlogo/欧洲体育.png", + "欧洲光影": "https://www.mxdyeah.top/static/tvlogo/欧洲光影.png", + "欧洲电影": "https://www.mxdyeah.top/static/tvlogo/欧洲电影.png", + "欧美影院": "https://www.mxdyeah.top/static/tvlogo/欧美影院.png", + "正德": "https://www.mxdyeah.top/static/tvlogo/正德.png", + "正德电视": "https://www.mxdyeah.top/static/tvlogo/正德电视.png", + "武夷山": "https://www.mxdyeah.top/static/tvlogo/武夷山.png", + "武平": "https://www.mxdyeah.top/static/tvlogo/武平.png", + "武术世界": "https://www.mxdyeah.top/static/tvlogo/武术世界.png", + "武汉外语": "https://www.mxdyeah.top/static/tvlogo/武汉外语.png", + "武汉少儿": "https://www.mxdyeah.top/static/tvlogo/武汉少儿.png", + "武汉教育": "https://www.mxdyeah.top/static/tvlogo/武汉教育.png", + "武汉文体": "https://www.mxdyeah.top/static/tvlogo/武汉文体.png", + "武汉新闻": "https://www.mxdyeah.top/static/tvlogo/武汉新闻.png", + "武汉新闻综合": "https://www.mxdyeah.top/static/tvlogo/武汉新闻综合.png", + "武汉电视剧": "https://www.mxdyeah.top/static/tvlogo/武汉电视剧.png", + "武汉科技生活": "https://www.mxdyeah.top/static/tvlogo/武汉科技生活.png", + "武汉经济": "https://www.mxdyeah.top/static/tvlogo/武汉经济.png", + "每日健身": "https://www.mxdyeah.top/static/tvlogo/每日健身.png", + "每日影院": "https://www.mxdyeah.top/static/tvlogo/每日影院.png", + "民视": "https://www.mxdyeah.top/static/tvlogo/民视.png", + "民视台湾": "https://www.mxdyeah.top/static/tvlogo/民视台湾.png", + "民视影剧": "https://www.mxdyeah.top/static/tvlogo/民视影剧.png", + "民视新闻": "https://www.mxdyeah.top/static/tvlogo/民视新闻.png", + "民视旅游": "https://www.mxdyeah.top/static/tvlogo/民视旅游.png", + "民视无线": "https://www.mxdyeah.top/static/tvlogo/民视无线.png", + "民视第一": "https://www.mxdyeah.top/static/tvlogo/民视第一.png", + "民视综艺": "https://www.mxdyeah.top/static/tvlogo/民视综艺.png", + "永安": "https://www.mxdyeah.top/static/tvlogo/永安.png", + "永定": "https://www.mxdyeah.top/static/tvlogo/永定.png", + "永春": "https://www.mxdyeah.top/static/tvlogo/永春.png", + "永泰": "https://www.mxdyeah.top/static/tvlogo/永泰.png", + "求索动物": "https://www.mxdyeah.top/static/tvlogo/求索动物.png", + "求索生活": "https://www.mxdyeah.top/static/tvlogo/求索生活.png", + "求索科学": "https://www.mxdyeah.top/static/tvlogo/求索科学.png", + "求索纪录": "https://www.mxdyeah.top/static/tvlogo/求索纪录.png", + "求索纪录4K": "https://www.mxdyeah.top/static/tvlogo/求索纪录4K.png", + "求索记录": "https://www.mxdyeah.top/static/tvlogo/求索记录.png", + "汉中": "https://www.mxdyeah.top/static/tvlogo/汉中.png", + "汉语体育健康": "https://www.mxdyeah.top/static/tvlogo/汉语体育健康.png", + "汉语信息服务": "https://www.mxdyeah.top/static/tvlogo/汉语信息服务.png", + "汉语经济生活": "https://www.mxdyeah.top/static/tvlogo/汉语经济生活.png", + "汉语综艺": "https://www.mxdyeah.top/static/tvlogo/汉语综艺.png", + "汉阴": "https://www.mxdyeah.top/static/tvlogo/汉阴.png", + "汕头文旅体育": "https://www.mxdyeah.top/static/tvlogo/汕头文旅体育.png", + "汕头经济": "https://www.mxdyeah.top/static/tvlogo/汕头经济.png", + "汕头经济生活": "https://www.mxdyeah.top/static/tvlogo/汕头经济生活.png", + "汕头综合": "https://www.mxdyeah.top/static/tvlogo/汕头综合.png", + "汕尾公共": "https://www.mxdyeah.top/static/tvlogo/汕尾公共.png", + "汕尾文化生活": "https://www.mxdyeah.top/static/tvlogo/汕尾文化生活.png", + "汕尾新闻综合": "https://www.mxdyeah.top/static/tvlogo/汕尾新闻综合.png", + "汕尾综合": "https://www.mxdyeah.top/static/tvlogo/汕尾综合.png", + "江苏": "https://www.mxdyeah.top/static/tvlogo/江苏.png", + "江苏休闲体育": "https://www.mxdyeah.top/static/tvlogo/江苏休闲体育.png", + "江苏优漫卡通": "https://www.mxdyeah.top/static/tvlogo/江苏优漫卡通.png", + "江苏体育休闲": "https://www.mxdyeah.top/static/tvlogo/江苏体育休闲.png", + "江苏公共新闻": "https://www.mxdyeah.top/static/tvlogo/江苏公共新闻.png", + "江苏南京广播": "https://www.mxdyeah.top/static/tvlogo/江苏南京广播.png", + "江苏南通": "https://www.mxdyeah.top/static/tvlogo/江苏南通.png", + "江苏卫视": "https://www.mxdyeah.top/static/tvlogo/江苏卫视.png", + "江苏国际": "https://www.mxdyeah.top/static/tvlogo/江苏国际.png", + "江苏城市": "https://www.mxdyeah.top/static/tvlogo/江苏城市.png", + "江苏学习": "https://www.mxdyeah.top/static/tvlogo/江苏学习.png", + "江苏宿迁": "https://www.mxdyeah.top/static/tvlogo/江苏宿迁.png", + "江苏常州": "https://www.mxdyeah.top/static/tvlogo/江苏常州.png", + "江苏影视": "https://www.mxdyeah.top/static/tvlogo/江苏影视.png", + "江苏徐州": "https://www.mxdyeah.top/static/tvlogo/江苏徐州.png", + "江苏教育": "https://www.mxdyeah.top/static/tvlogo/江苏教育.png", + "江苏新闻": "https://www.mxdyeah.top/static/tvlogo/江苏新闻.png", + "江苏睢宁": "https://www.mxdyeah.top/static/tvlogo/江苏睢宁.png", + "江苏综艺": "https://www.mxdyeah.top/static/tvlogo/江苏综艺.png", + "江苏赣榆": "https://www.mxdyeah.top/static/tvlogo/江苏赣榆.png", + "江苏邳州": "https://www.mxdyeah.top/static/tvlogo/江苏邳州.png", + "江苏镇江": "https://www.mxdyeah.top/static/tvlogo/江苏镇江.png", + "江西公共农业": "https://www.mxdyeah.top/static/tvlogo/江西公共农业.png", + "江西卫视": "https://www.mxdyeah.top/static/tvlogo/江西卫视.png", + "江西少儿": "https://www.mxdyeah.top/static/tvlogo/江西少儿.png", + "江西影视旅游": "https://www.mxdyeah.top/static/tvlogo/江西影视旅游.png", + "江西教育": "https://www.mxdyeah.top/static/tvlogo/江西教育.png", + "江西新闻": "https://www.mxdyeah.top/static/tvlogo/江西新闻.png", + "江西移动电视": "https://www.mxdyeah.top/static/tvlogo/江西移动电视.png", + "江西经济生活": "https://www.mxdyeah.top/static/tvlogo/江西经济生活.png", + "江西都市": "https://www.mxdyeah.top/static/tvlogo/江西都市.png", + "江门侨乡生活": "https://www.mxdyeah.top/static/tvlogo/江门侨乡生活.png", + "江门公共": "https://www.mxdyeah.top/static/tvlogo/江门公共.png", + "江门教育": "https://www.mxdyeah.top/static/tvlogo/江门教育.png", + "江门综合": "https://www.mxdyeah.top/static/tvlogo/江门综合.png", + "汽摩": "https://www.mxdyeah.top/static/tvlogo/汽摩.png", + "沈阳": "https://www.mxdyeah.top/static/tvlogo/沈阳.png", + "沈阳新闻": "https://www.mxdyeah.top/static/tvlogo/沈阳新闻.png", + "沈阳新闻综合": "https://www.mxdyeah.top/static/tvlogo/沈阳新闻综合.png", + "沙县": "https://www.mxdyeah.top/static/tvlogo/沙县.png", + "河北三家佳购物": "https://www.mxdyeah.top/static/tvlogo/河北三家佳购物.png", + "河北公共": "https://www.mxdyeah.top/static/tvlogo/河北公共.png", + "河北农民": "https://www.mxdyeah.top/static/tvlogo/河北农民.png", + "河北卫视": "https://www.mxdyeah.top/static/tvlogo/河北卫视.png", + "河北少儿科教": "https://www.mxdyeah.top/static/tvlogo/河北少儿科教.png", + "河北影视": "https://www.mxdyeah.top/static/tvlogo/河北影视.png", + "河北影视剧": "https://www.mxdyeah.top/static/tvlogo/河北影视剧.png", + "河北经济": "https://www.mxdyeah.top/static/tvlogo/河北经济.png", + "河北经济生活": "https://www.mxdyeah.top/static/tvlogo/河北经济生活.png", + "河北都市": "https://www.mxdyeah.top/static/tvlogo/河北都市.png", + "河南4K": "https://www.mxdyeah.top/static/tvlogo/河南4K.png", + "河南乡村": "https://www.mxdyeah.top/static/tvlogo/河南乡村.png", + "河南公共": "https://www.mxdyeah.top/static/tvlogo/河南公共.png", + "河南卫视": "https://www.mxdyeah.top/static/tvlogo/河南卫视.png", + "河南国际": "https://www.mxdyeah.top/static/tvlogo/河南国际.png", + "河南戏曲": "https://www.mxdyeah.top/static/tvlogo/河南戏曲.png", + "河南文物宝库": "https://www.mxdyeah.top/static/tvlogo/河南文物宝库.png", + "河南新闻": "https://www.mxdyeah.top/static/tvlogo/河南新闻.png", + "河南梨园": "https://www.mxdyeah.top/static/tvlogo/河南梨园.png", + "河南武术世界": "https://www.mxdyeah.top/static/tvlogo/河南武术世界.png", + "河南民生": "https://www.mxdyeah.top/static/tvlogo/河南民生.png", + "河南法治": "https://www.mxdyeah.top/static/tvlogo/河南法治.png", + "河南电视剧": "https://www.mxdyeah.top/static/tvlogo/河南电视剧.png", + "河南都市": "https://www.mxdyeah.top/static/tvlogo/河南都市.png", + "河源公共": "https://www.mxdyeah.top/static/tvlogo/河源公共.png", + "河源综合": "https://www.mxdyeah.top/static/tvlogo/河源综合.png", + "泉州": "https://www.mxdyeah.top/static/tvlogo/泉州.png", + "泉州一套": "https://www.mxdyeah.top/static/tvlogo/泉州一套.png", + "泉州三套": "https://www.mxdyeah.top/static/tvlogo/泉州三套.png", + "泉州二套": "https://www.mxdyeah.top/static/tvlogo/泉州二套.png", + "泉州四套": "https://www.mxdyeah.top/static/tvlogo/泉州四套.png", + "泉州影视": "https://www.mxdyeah.top/static/tvlogo/泉州影视.png", + "泉州新闻": "https://www.mxdyeah.top/static/tvlogo/泉州新闻.png", + "泉州都市生活": "https://www.mxdyeah.top/static/tvlogo/泉州都市生活.png", + "泉州闽南语": "https://www.mxdyeah.top/static/tvlogo/泉州闽南语.png", + "法制天地": "https://www.mxdyeah.top/static/tvlogo/法制天地.png", + "法国时装": "https://www.mxdyeah.top/static/tvlogo/法国时装.png", + "法治天地": "https://www.mxdyeah.top/static/tvlogo/法治天地.png", + "泰宁": "https://www.mxdyeah.top/static/tvlogo/泰宁.png", + "泰安1": "https://www.mxdyeah.top/static/tvlogo/泰安1.png", + "洛阳文旅": "https://www.mxdyeah.top/static/tvlogo/洛阳文旅.png", + "洛阳科教": "https://www.mxdyeah.top/static/tvlogo/洛阳科教.png", + "济南图文": "https://www.mxdyeah.top/static/tvlogo/济南图文.png", + "济南娱乐": "https://www.mxdyeah.top/static/tvlogo/济南娱乐.png", + "济南少儿": "https://www.mxdyeah.top/static/tvlogo/济南少儿.png", + "济南文旅体育": "https://www.mxdyeah.top/static/tvlogo/济南文旅体育.png", + "济南新闻综合": "https://www.mxdyeah.top/static/tvlogo/济南新闻综合.png", + "济南生活": "https://www.mxdyeah.top/static/tvlogo/济南生活.png", + "济南移动电视": "https://www.mxdyeah.top/static/tvlogo/济南移动电视.png", + "济南都市": "https://www.mxdyeah.top/static/tvlogo/济南都市.png", + "济南鲁中": "https://www.mxdyeah.top/static/tvlogo/济南鲁中.png", + "浙江公共新农村": "https://www.mxdyeah.top/static/tvlogo/浙江公共新农村.png", + "浙江公共新闻": "https://www.mxdyeah.top/static/tvlogo/浙江公共新闻.png", + "浙江卫视": "https://www.mxdyeah.top/static/tvlogo/浙江卫视.png", + "浙江国际": "https://www.mxdyeah.top/static/tvlogo/浙江国际.png", + "浙江好易购": "https://www.mxdyeah.top/static/tvlogo/浙江好易购.png", + "浙江少儿": "https://www.mxdyeah.top/static/tvlogo/浙江少儿.png", + "浙江教科影视": "https://www.mxdyeah.top/static/tvlogo/浙江教科影视.png", + "浙江教育科技": "https://www.mxdyeah.top/static/tvlogo/浙江教育科技.png", + "浙江数码时代": "https://www.mxdyeah.top/static/tvlogo/浙江数码时代.png", + "浙江新闻": "https://www.mxdyeah.top/static/tvlogo/浙江新闻.png", + "浙江民生": "https://www.mxdyeah.top/static/tvlogo/浙江民生.png", + "浙江民生休闲": "https://www.mxdyeah.top/static/tvlogo/浙江民生休闲.png", + "浙江科教影视": "https://www.mxdyeah.top/static/tvlogo/浙江科教影视.png", + "浙江第一家庭": "https://www.mxdyeah.top/static/tvlogo/浙江第一家庭.png", + "浙江经济生活": "https://www.mxdyeah.top/static/tvlogo/浙江经济生活.png", + "浙江钱江都市": "https://www.mxdyeah.top/static/tvlogo/浙江钱江都市.png", + "浙江音乐调频": "https://www.mxdyeah.top/static/tvlogo/浙江音乐调频.png", + "浦东": "https://www.mxdyeah.top/static/tvlogo/浦东.png", + "浦城": "https://www.mxdyeah.top/static/tvlogo/浦城.png", + "海丰": "https://www.mxdyeah.top/static/tvlogo/海丰.png", + "海南公共": "https://www.mxdyeah.top/static/tvlogo/海南公共.png", + "海南卫视": "https://www.mxdyeah.top/static/tvlogo/海南卫视.png", + "海南少儿": "https://www.mxdyeah.top/static/tvlogo/海南少儿.png", + "海南文旅": "https://www.mxdyeah.top/static/tvlogo/海南文旅.png", + "海南新闻": "https://www.mxdyeah.top/static/tvlogo/海南新闻.png", + "海南经济": "https://www.mxdyeah.top/static/tvlogo/海南经济.png", + "海口1": "https://www.mxdyeah.top/static/tvlogo/海口1.png", + "海口2": "https://www.mxdyeah.top/static/tvlogo/海口2.png", + "海口3": "https://www.mxdyeah.top/static/tvlogo/海口3.png", + "海峡卫视": "https://www.mxdyeah.top/static/tvlogo/海峡卫视.png", + "海沧": "https://www.mxdyeah.top/static/tvlogo/海沧.png", + "海看4K": "https://www.mxdyeah.top/static/tvlogo/海看4K.png", + "海看剧场": "https://www.mxdyeah.top/static/tvlogo/海看剧场.png", + "海看大片": "https://www.mxdyeah.top/static/tvlogo/海看大片.png", + "海看少儿": "https://www.mxdyeah.top/static/tvlogo/海看少儿.png", + "海看教育": "https://www.mxdyeah.top/static/tvlogo/海看教育.png", + "海看演艺": "https://www.mxdyeah.top/static/tvlogo/海看演艺.png", + "海看热播": "https://www.mxdyeah.top/static/tvlogo/海看热播.png", + "海看爱宠": "https://www.mxdyeah.top/static/tvlogo/海看爱宠.png", + "海豚": "https://www.mxdyeah.top/static/tvlogo/海豚.png", + "海豚综合": "https://www.mxdyeah.top/static/tvlogo/海豚综合.png", + "深圳DV生活": "https://www.mxdyeah.top/static/tvlogo/深圳DV生活.png", + "深圳东部": "https://www.mxdyeah.top/static/tvlogo/深圳东部.png", + "深圳众创": "https://www.mxdyeah.top/static/tvlogo/深圳众创.png", + "深圳众创TV": "https://www.mxdyeah.top/static/tvlogo/深圳众创TV.png", + "深圳体育健康": "https://www.mxdyeah.top/static/tvlogo/深圳体育健康.png", + "深圳公共": "https://www.mxdyeah.top/static/tvlogo/深圳公共.png", + "深圳卫视": "https://www.mxdyeah.top/static/tvlogo/深圳卫视.png", + "深圳国际": "https://www.mxdyeah.top/static/tvlogo/深圳国际.png", + "深圳娱乐": "https://www.mxdyeah.top/static/tvlogo/深圳娱乐.png", + "深圳宝安": "https://www.mxdyeah.top/static/tvlogo/深圳宝安.png", + "深圳少儿": "https://www.mxdyeah.top/static/tvlogo/深圳少儿.png", + "深圳电视剧": "https://www.mxdyeah.top/static/tvlogo/深圳电视剧.png", + "深圳财经生活": "https://www.mxdyeah.top/static/tvlogo/深圳财经生活.png", + "深圳都市": "https://www.mxdyeah.top/static/tvlogo/深圳都市.png", + "深圳龙华": "https://www.mxdyeah.top/static/tvlogo/深圳龙华.png", + "深圳龙岗": "https://www.mxdyeah.top/static/tvlogo/深圳龙岗.png", + "清华": "https://www.mxdyeah.top/static/tvlogo/清华.png", + "清华大学": "https://www.mxdyeah.top/static/tvlogo/清华大学.png", + "清流": "https://www.mxdyeah.top/static/tvlogo/清流.png", + "清远公共": "https://www.mxdyeah.top/static/tvlogo/清远公共.png", + "清远新闻综合": "https://www.mxdyeah.top/static/tvlogo/清远新闻综合.png", + "清远生活服务": "https://www.mxdyeah.top/static/tvlogo/清远生活服务.png", + "清远综合": "https://www.mxdyeah.top/static/tvlogo/清远综合.png", + "渠县新闻综合": "https://www.mxdyeah.top/static/tvlogo/渠县新闻综合.png", + "温江": "https://www.mxdyeah.top/static/tvlogo/温江.png", + "渭南": "https://www.mxdyeah.top/static/tvlogo/渭南.png", + "港台电视31": "https://www.mxdyeah.top/static/tvlogo/港台电视31.png", + "港台电视32": "https://www.mxdyeah.top/static/tvlogo/港台电视32.png", + "港台电视33": "https://www.mxdyeah.top/static/tvlogo/港台电视33.png", + "游戏竞技": "https://www.mxdyeah.top/static/tvlogo/游戏竞技.png", + "游戏风云": "https://www.mxdyeah.top/static/tvlogo/游戏风云.png", + "湖北公共·新闻": "https://www.mxdyeah.top/static/tvlogo/湖北公共·新闻.png", + "湖北公共新闻": "https://www.mxdyeah.top/static/tvlogo/湖北公共新闻.png", + "湖北卫视": "https://www.mxdyeah.top/static/tvlogo/湖北卫视.png", + "湖北垄上": "https://www.mxdyeah.top/static/tvlogo/湖北垄上.png", + "湖北影视": "https://www.mxdyeah.top/static/tvlogo/湖北影视.png", + "湖北教育": "https://www.mxdyeah.top/static/tvlogo/湖北教育.png", + "湖北生活": "https://www.mxdyeah.top/static/tvlogo/湖北生活.png", + "湖北经济": "https://www.mxdyeah.top/static/tvlogo/湖北经济.png", + "湖北经视": "https://www.mxdyeah.top/static/tvlogo/湖北经视.png", + "湖北综合": "https://www.mxdyeah.top/static/tvlogo/湖北综合.png", + "湖南公共": "https://www.mxdyeah.top/static/tvlogo/湖南公共.png", + "湖南卫视": "https://www.mxdyeah.top/static/tvlogo/湖南卫视.png", + "湖南卫视NAME版": "https://www.mxdyeah.top/static/tvlogo/湖南卫视NAME版.png", + "湖南国际": "https://www.mxdyeah.top/static/tvlogo/湖南国际.png", + "湖南娱乐": "https://www.mxdyeah.top/static/tvlogo/湖南娱乐.png", + "湖南快乐垂钓": "https://www.mxdyeah.top/static/tvlogo/湖南快乐垂钓.png", + "湖南教育": "https://www.mxdyeah.top/static/tvlogo/湖南教育.png", + "湖南爱晚": "https://www.mxdyeah.top/static/tvlogo/湖南爱晚.png", + "湖南电影": "https://www.mxdyeah.top/static/tvlogo/湖南电影.png", + "湖南电视剧": "https://www.mxdyeah.top/static/tvlogo/湖南电视剧.png", + "湖南经视": "https://www.mxdyeah.top/static/tvlogo/湖南经视.png", + "湖南茶": "https://www.mxdyeah.top/static/tvlogo/湖南茶.png", + "湖南都市": "https://www.mxdyeah.top/static/tvlogo/湖南都市.png", + "湖南金鹰卡通": "https://www.mxdyeah.top/static/tvlogo/湖南金鹰卡通.png", + "湖南金鹰纪实": "https://www.mxdyeah.top/static/tvlogo/湖南金鹰纪实.png", + "湖州公共": "https://www.mxdyeah.top/static/tvlogo/湖州公共.png", + "湛江公共": "https://www.mxdyeah.top/static/tvlogo/湛江公共.png", + "湛江新闻综合": "https://www.mxdyeah.top/static/tvlogo/湛江新闻综合.png", + "湛江综合": "https://www.mxdyeah.top/static/tvlogo/湛江综合.png", + "滚动力ROLLOR": "https://www.mxdyeah.top/static/tvlogo/滚动力ROLLOR.png", + "漳州": "https://www.mxdyeah.top/static/tvlogo/漳州.png", + "漳州公共": "https://www.mxdyeah.top/static/tvlogo/漳州公共.png", + "漳州新闻": "https://www.mxdyeah.top/static/tvlogo/漳州新闻.png", + "漳平": "https://www.mxdyeah.top/static/tvlogo/漳平.png", + "漳浦": "https://www.mxdyeah.top/static/tvlogo/漳浦.png", + "潘多拉粉红": "https://www.mxdyeah.top/static/tvlogo/潘多拉粉红.png", + "潘多拉紫": "https://www.mxdyeah.top/static/tvlogo/潘多拉紫.png", + "潮安": "https://www.mxdyeah.top/static/tvlogo/潮安.png", + "潮州民生": "https://www.mxdyeah.top/static/tvlogo/潮州民生.png", + "潮州综合": "https://www.mxdyeah.top/static/tvlogo/潮州综合.png", + "澜湄国际": "https://www.mxdyeah.top/static/tvlogo/澜湄国际.png", + "澜湄国际卫视": "https://www.mxdyeah.top/static/tvlogo/澜湄国际卫视.png", + "澳亚卫视": "https://www.mxdyeah.top/static/tvlogo/澳亚卫视.png", + "澳视MACAU": "https://www.mxdyeah.top/static/tvlogo/澳视MACAU.png", + "澳视体育": "https://www.mxdyeah.top/static/tvlogo/澳视体育.png", + "澳视澳门": "https://www.mxdyeah.top/static/tvlogo/澳视澳门.png", + "澳视综艺": "https://www.mxdyeah.top/static/tvlogo/澳视综艺.png", + "澳视葡文": "https://www.mxdyeah.top/static/tvlogo/澳视葡文.png", + "澳视资讯": "https://www.mxdyeah.top/static/tvlogo/澳视资讯.png", + "澳门卫视": "https://www.mxdyeah.top/static/tvlogo/澳门卫视.png", + "澳门莲花": "https://www.mxdyeah.top/static/tvlogo/澳门莲花.png", + "澳门莲花卫视": "https://www.mxdyeah.top/static/tvlogo/澳门莲花卫视.png", + "激情燃烧": "https://www.mxdyeah.top/static/tvlogo/激情燃烧.png", + "炫动3D": "https://www.mxdyeah.top/static/tvlogo/炫动3D.png", + "炫动卡通": "https://www.mxdyeah.top/static/tvlogo/炫动卡通.png", + "热播剧场": "https://www.mxdyeah.top/static/tvlogo/热播剧场.png", + "热播剧场1": "https://www.mxdyeah.top/static/tvlogo/热播剧场1.png", + "热播电影": "https://www.mxdyeah.top/static/tvlogo/热播电影.png", + "熊猫": "https://www.mxdyeah.top/static/tvlogo/熊猫.png", + "爆谷": "https://www.mxdyeah.top/static/tvlogo/爆谷.png", + "爱上4K": "https://www.mxdyeah.top/static/tvlogo/爱上4K.png", + "爱奇艺": "https://www.mxdyeah.top/static/tvlogo/爱奇艺.png", + "爱尔达体育1": "https://www.mxdyeah.top/static/tvlogo/爱尔达体育1.png", + "爱尔达体育2": "https://www.mxdyeah.top/static/tvlogo/爱尔达体育2.png", + "爱尔达体育3": "https://www.mxdyeah.top/static/tvlogo/爱尔达体育3.png", + "爱尔达娱乐": "https://www.mxdyeah.top/static/tvlogo/爱尔达娱乐.png", + "爱尔达影剧": "https://www.mxdyeah.top/static/tvlogo/爱尔达影剧.png", + "爱尔达影视": "https://www.mxdyeah.top/static/tvlogo/爱尔达影视.png", + "爱尔达综合": "https://www.mxdyeah.top/static/tvlogo/爱尔达综合.png", + "爱映画": "https://www.mxdyeah.top/static/tvlogo/爱映画.png", + "爱看导视": "https://www.mxdyeah.top/static/tvlogo/爱看导视.png", + "狼谷育乐": "https://www.mxdyeah.top/static/tvlogo/狼谷育乐.png", + "猪哥亮歌厅秀": "https://www.mxdyeah.top/static/tvlogo/猪哥亮歌厅秀.png", + "环宇电影": "https://www.mxdyeah.top/static/tvlogo/环宇电影.png", + "环球": "https://www.mxdyeah.top/static/tvlogo/环球.png", + "环球奇观": "https://www.mxdyeah.top/static/tvlogo/环球奇观.png", + "环球旅游": "https://www.mxdyeah.top/static/tvlogo/环球旅游.png", + "现代女性": "https://www.mxdyeah.top/static/tvlogo/现代女性.png", + "现代教育": "https://www.mxdyeah.top/static/tvlogo/现代教育.png", + "珙县新闻": "https://www.mxdyeah.top/static/tvlogo/珙县新闻.png", + "珠江": "https://www.mxdyeah.top/static/tvlogo/珠江.png", + "珠江海外": "https://www.mxdyeah.top/static/tvlogo/珠江海外.png", + "珠海1": "https://www.mxdyeah.top/static/tvlogo/珠海1.png", + "珠海2": "https://www.mxdyeah.top/static/tvlogo/珠海2.png", + "珠海公共": "https://www.mxdyeah.top/static/tvlogo/珠海公共.png", + "珠海综合": "https://www.mxdyeah.top/static/tvlogo/珠海综合.png", + "瓮安综合": "https://www.mxdyeah.top/static/tvlogo/瓮安综合.png", + "甘肃公共": "https://www.mxdyeah.top/static/tvlogo/甘肃公共.png", + "甘肃卫视": "https://www.mxdyeah.top/static/tvlogo/甘肃卫视.png", + "甘肃少儿": "https://www.mxdyeah.top/static/tvlogo/甘肃少儿.png", + "甘肃文化影视": "https://www.mxdyeah.top/static/tvlogo/甘肃文化影视.png", + "甘肃经济": "https://www.mxdyeah.top/static/tvlogo/甘肃经济.png", + "甘肃都市": "https://www.mxdyeah.top/static/tvlogo/甘肃都市.png", + "生命": "https://www.mxdyeah.top/static/tvlogo/生命.png", + "生命电视": "https://www.mxdyeah.top/static/tvlogo/生命电视.png", + "生态环境": "https://www.mxdyeah.top/static/tvlogo/生态环境.png", + "生活剧场": "https://www.mxdyeah.top/static/tvlogo/生活剧场.png", + "生活时尚": "https://www.mxdyeah.top/static/tvlogo/生活时尚.png", + "电子体育": "https://www.mxdyeah.top/static/tvlogo/电子体育.png", + "电影免费看1": "https://www.mxdyeah.top/static/tvlogo/电影免费看1.png", + "电影免费看2": "https://www.mxdyeah.top/static/tvlogo/电影免费看2.png", + "电影原声": "https://www.mxdyeah.top/static/tvlogo/电影原声.png", + "电影原声台CMUSIC": "https://www.mxdyeah.top/static/tvlogo/电影原声台CMUSIC.png", + "电竞天堂": "https://www.mxdyeah.top/static/tvlogo/电竞天堂.png", + "电视指南": "https://www.mxdyeah.top/static/tvlogo/电视指南.png", + "留学世界": "https://www.mxdyeah.top/static/tvlogo/留学世界.png", + "番薯电视": "https://www.mxdyeah.top/static/tvlogo/番薯电视.png", + "白云综合": "https://www.mxdyeah.top/static/tvlogo/白云综合.png", + "百事通": "https://www.mxdyeah.top/static/tvlogo/百事通.png", + "百姓健康": "https://www.mxdyeah.top/static/tvlogo/百姓健康.png", + "百姓调解": "https://www.mxdyeah.top/static/tvlogo/百姓调解.png", + "百视TV": "https://www.mxdyeah.top/static/tvlogo/百视TV.png", + "百视通": "https://www.mxdyeah.top/static/tvlogo/百视通.png", + "百视通华语": "https://www.mxdyeah.top/static/tvlogo/百视通华语.png", + "百视通港剧经典": "https://www.mxdyeah.top/static/tvlogo/百视通港剧经典.png", + "百视通电影轮播": "https://www.mxdyeah.top/static/tvlogo/百视通电影轮播.png", + "百视通电视剧": "https://www.mxdyeah.top/static/tvlogo/百视通电视剧.png", + "百视通精品电影": "https://www.mxdyeah.top/static/tvlogo/百视通精品电影.png", + "百视通谍战剧场": "https://www.mxdyeah.top/static/tvlogo/百视通谍战剧场.png", + "盗墓电影": "https://www.mxdyeah.top/static/tvlogo/盗墓电影.png", + "盘州综合": "https://www.mxdyeah.top/static/tvlogo/盘州综合.png", + "盘锦": "https://www.mxdyeah.top/static/tvlogo/盘锦.png", + "眉县": "https://www.mxdyeah.top/static/tvlogo/眉县.png", + "真4K": "https://www.mxdyeah.top/static/tvlogo/真4K.png", + "睛彩广场舞": "https://www.mxdyeah.top/static/tvlogo/睛彩广场舞.png", + "睛彩竞技": "https://www.mxdyeah.top/static/tvlogo/睛彩竞技.png", + "睛彩篮球": "https://www.mxdyeah.top/static/tvlogo/睛彩篮球.png", + "睛彩羽毛球": "https://www.mxdyeah.top/static/tvlogo/睛彩羽毛球.png", + "睛彩青少": "https://www.mxdyeah.top/static/tvlogo/睛彩青少.png", + "知识": "https://www.mxdyeah.top/static/tvlogo/知识.png", + "石家庄娱乐": "https://www.mxdyeah.top/static/tvlogo/石家庄娱乐.png", + "石家庄新闻综合": "https://www.mxdyeah.top/static/tvlogo/石家庄新闻综合.png", + "石家庄生活": "https://www.mxdyeah.top/static/tvlogo/石家庄生活.png", + "石油": "https://www.mxdyeah.top/static/tvlogo/石油.png", + "石泉": "https://www.mxdyeah.top/static/tvlogo/石泉.png", + "石狮": "https://www.mxdyeah.top/static/tvlogo/石狮.png", + "神州新闻": "https://www.mxdyeah.top/static/tvlogo/神州新闻.png", + "神木": "https://www.mxdyeah.top/static/tvlogo/神木.png", + "福州": "https://www.mxdyeah.top/static/tvlogo/福州.png", + "福州导视": "https://www.mxdyeah.top/static/tvlogo/福州导视.png", + "福州少儿": "https://www.mxdyeah.top/static/tvlogo/福州少儿.png", + "福州影视": "https://www.mxdyeah.top/static/tvlogo/福州影视.png", + "福州新闻": "https://www.mxdyeah.top/static/tvlogo/福州新闻.png", + "福州生活": "https://www.mxdyeah.top/static/tvlogo/福州生活.png", + "福州综合": "https://www.mxdyeah.top/static/tvlogo/福州综合.png", + "福建乡村公共": "https://www.mxdyeah.top/static/tvlogo/福建乡村公共.png", + "福建体育": "https://www.mxdyeah.top/static/tvlogo/福建体育.png", + "福建公共": "https://www.mxdyeah.top/static/tvlogo/福建公共.png", + "福建少儿": "https://www.mxdyeah.top/static/tvlogo/福建少儿.png", + "福建教育": "https://www.mxdyeah.top/static/tvlogo/福建教育.png", + "福建文体": "https://www.mxdyeah.top/static/tvlogo/福建文体.png", + "福建新闻": "https://www.mxdyeah.top/static/tvlogo/福建新闻.png", + "福建旅游": "https://www.mxdyeah.top/static/tvlogo/福建旅游.png", + "福建电视剧": "https://www.mxdyeah.top/static/tvlogo/福建电视剧.png", + "福建经济": "https://www.mxdyeah.top/static/tvlogo/福建经济.png", + "福建综合": "https://www.mxdyeah.top/static/tvlogo/福建综合.png", + "福建都市": "https://www.mxdyeah.top/static/tvlogo/福建都市.png", + "福鼎": "https://www.mxdyeah.top/static/tvlogo/福鼎.png", + "私人影院": "https://www.mxdyeah.top/static/tvlogo/私人影院.png", + "科幻影院": "https://www.mxdyeah.top/static/tvlogo/科幻影院.png", + "移动戏曲": "https://www.mxdyeah.top/static/tvlogo/移动戏曲.png", + "移动频道": "https://www.mxdyeah.top/static/tvlogo/移动频道.png", + "空中英语教室": "https://www.mxdyeah.top/static/tvlogo/空中英语教室.png", + "第一剧场": "https://www.mxdyeah.top/static/tvlogo/第一剧场.png", + "第一财经": "https://www.mxdyeah.top/static/tvlogo/第一财经.png", + "篮球": "https://www.mxdyeah.top/static/tvlogo/篮球.png", + "粤语片": "https://www.mxdyeah.top/static/tvlogo/粤语片.png", + "精品剧场": "https://www.mxdyeah.top/static/tvlogo/精品剧场.png", + "精品导视": "https://www.mxdyeah.top/static/tvlogo/精品导视.png", + "精彩影视": "https://www.mxdyeah.top/static/tvlogo/精彩影视.png", + "精彩电视剧": "https://www.mxdyeah.top/static/tvlogo/精彩电视剧.png", + "精选": "https://www.mxdyeah.top/static/tvlogo/精选.png", + "精选动漫": "https://www.mxdyeah.top/static/tvlogo/精选动漫.png", + "紫阳": "https://www.mxdyeah.top/static/tvlogo/紫阳.png", + "纪实人文": "https://www.mxdyeah.top/static/tvlogo/纪实人文.png", + "纪实科教": "https://www.mxdyeah.top/static/tvlogo/纪实科教.png", + "纪录片": "https://www.mxdyeah.top/static/tvlogo/纪录片.png", + "纬来体育": "https://www.mxdyeah.top/static/tvlogo/纬来体育.png", + "纬来戏剧": "https://www.mxdyeah.top/static/tvlogo/纬来戏剧.png", + "纬来日本": "https://www.mxdyeah.top/static/tvlogo/纬来日本.png", + "纬来电影": "https://www.mxdyeah.top/static/tvlogo/纬来电影.png", + "纬来精彩": "https://www.mxdyeah.top/static/tvlogo/纬来精彩.png", + "纬来精采": "https://www.mxdyeah.top/static/tvlogo/纬来精采.png", + "纬来综合": "https://www.mxdyeah.top/static/tvlogo/纬来综合.png", + "纬来育乐": "https://www.mxdyeah.top/static/tvlogo/纬来育乐.png", + "纯享4K": "https://www.mxdyeah.top/static/tvlogo/纯享4K.png", + "绍兴新闻综合": "https://www.mxdyeah.top/static/tvlogo/绍兴新闻综合.png", + "绍兴柯区新闻综合": "https://www.mxdyeah.top/static/tvlogo/绍兴柯区新闻综合.png", + "绍兴柯桥区时尚": "https://www.mxdyeah.top/static/tvlogo/绍兴柯桥区时尚.png", + "经典剧场": "https://www.mxdyeah.top/static/tvlogo/经典剧场.png", + "经典卡通": "https://www.mxdyeah.top/static/tvlogo/经典卡通.png", + "经典电影": "https://www.mxdyeah.top/static/tvlogo/经典电影.png", + "维语影视": "https://www.mxdyeah.top/static/tvlogo/维语影视.png", + "维语新闻综合": "https://www.mxdyeah.top/static/tvlogo/维语新闻综合.png", + "维语经济生活": "https://www.mxdyeah.top/static/tvlogo/维语经济生活.png", + "网络棋牌": "https://www.mxdyeah.top/static/tvlogo/网络棋牌.png", + "罪案侦缉": "https://www.mxdyeah.top/static/tvlogo/罪案侦缉.png", + "置业": "https://www.mxdyeah.top/static/tvlogo/置业.png", + "美丽人生": "https://www.mxdyeah.top/static/tvlogo/美丽人生.png", + "美亚电影": "https://www.mxdyeah.top/static/tvlogo/美亚电影.png", + "美亚高清电影": "https://www.mxdyeah.top/static/tvlogo/美亚高清电影.png", + "美国之音": "https://www.mxdyeah.top/static/tvlogo/美国之音.png", + "美好电视": "https://www.mxdyeah.top/static/tvlogo/美好电视.png", + "美食天府": "https://www.mxdyeah.top/static/tvlogo/美食天府.png", + "美食星球": "https://www.mxdyeah.top/static/tvlogo/美食星球.png", + "翡翠": "https://www.mxdyeah.top/static/tvlogo/翡翠.png", + "耀才财经": "https://www.mxdyeah.top/static/tvlogo/耀才财经.png", + "老年福": "https://www.mxdyeah.top/static/tvlogo/老年福.png", + "老故事": "https://www.mxdyeah.top/static/tvlogo/老故事.png", + "聚鲨环球精选": "https://www.mxdyeah.top/static/tvlogo/聚鲨环球精选.png", + "肇庆公共": "https://www.mxdyeah.top/static/tvlogo/肇庆公共.png", + "肇庆生活服务": "https://www.mxdyeah.top/static/tvlogo/肇庆生活服务.png", + "肇庆综合": "https://www.mxdyeah.top/static/tvlogo/肇庆综合.png", + "船山综合": "https://www.mxdyeah.top/static/tvlogo/船山综合.png", + "艾尔达体育1": "https://www.mxdyeah.top/static/tvlogo/艾尔达体育1.png", + "艾尔达体育2": "https://www.mxdyeah.top/static/tvlogo/艾尔达体育2.png", + "艾尔达体育3": "https://www.mxdyeah.top/static/tvlogo/艾尔达体育3.png", + "艾尔达原音1": "https://www.mxdyeah.top/static/tvlogo/艾尔达原音1.png", + "艾尔达原音2": "https://www.mxdyeah.top/static/tvlogo/艾尔达原音2.png", + "艾尔达原音3": "https://www.mxdyeah.top/static/tvlogo/艾尔达原音3.png", + "艾尔达奥运1": "https://www.mxdyeah.top/static/tvlogo/艾尔达奥运1.png", + "艾尔达奥运2": "https://www.mxdyeah.top/static/tvlogo/艾尔达奥运2.png", + "艾尔达奥运3": "https://www.mxdyeah.top/static/tvlogo/艾尔达奥运3.png", + "艾尔达娱乐": "https://www.mxdyeah.top/static/tvlogo/艾尔达娱乐.png", + "艾尔达影剧": "https://www.mxdyeah.top/static/tvlogo/艾尔达影剧.png", + "艾尔达生活英语": "https://www.mxdyeah.top/static/tvlogo/艾尔达生活英语.png", + "艾尔达综合": "https://www.mxdyeah.top/static/tvlogo/艾尔达综合.png", + "芒果TV独播": "https://www.mxdyeah.top/static/tvlogo/芒果TV独播.png", + "芒果乐搜": "https://www.mxdyeah.top/static/tvlogo/芒果乐搜.png", + "芒果乐淘": "https://www.mxdyeah.top/static/tvlogo/芒果乐淘.png", + "芒果互娱": "https://www.mxdyeah.top/static/tvlogo/芒果互娱.png", + "花儿高清": "https://www.mxdyeah.top/static/tvlogo/花儿高清.png", + "花系列经典剧场": "https://www.mxdyeah.top/static/tvlogo/花系列经典剧场.png", + "苏州4K": "https://www.mxdyeah.top/static/tvlogo/苏州4K.png", + "英德": "https://www.mxdyeah.top/static/tvlogo/英德.png", + "英语辅导": "https://www.mxdyeah.top/static/tvlogo/英语辅导.png", + "茂名公共": "https://www.mxdyeah.top/static/tvlogo/茂名公共.png", + "茂名文化生活": "https://www.mxdyeah.top/static/tvlogo/茂名文化生活.png", + "茂名综合": "https://www.mxdyeah.top/static/tvlogo/茂名综合.png", + "茶": "https://www.mxdyeah.top/static/tvlogo/茶.png", + "茶频道": "https://www.mxdyeah.top/static/tvlogo/茶频道.png", + "莆田": "https://www.mxdyeah.top/static/tvlogo/莆田.png", + "莆田新闻": "https://www.mxdyeah.top/static/tvlogo/莆田新闻.png", + "莲花卫视": "https://www.mxdyeah.top/static/tvlogo/莲花卫视.png", + "萍乡": "https://www.mxdyeah.top/static/tvlogo/萍乡.png", + "营口": "https://www.mxdyeah.top/static/tvlogo/营口.png", + "营口公共": "https://www.mxdyeah.top/static/tvlogo/营口公共.png", + "营口新闻综合": "https://www.mxdyeah.top/static/tvlogo/营口新闻综合.png", + "葫芦岛": "https://www.mxdyeah.top/static/tvlogo/葫芦岛.png", + "蓬溪新闻综合": "https://www.mxdyeah.top/static/tvlogo/蓬溪新闻综合.png", + "蕉蕉棒": "https://www.mxdyeah.top/static/tvlogo/蕉蕉棒.png", + "虎牙直播": "https://www.mxdyeah.top/static/tvlogo/虎牙直播.png", + "衢州公共": "https://www.mxdyeah.top/static/tvlogo/衢州公共.png", + "衢州新闻综合": "https://www.mxdyeah.top/static/tvlogo/衢州新闻综合.png", + "西乡": "https://www.mxdyeah.top/static/tvlogo/西乡.png", + "西宁": "https://www.mxdyeah.top/static/tvlogo/西宁.png", + "西宁生活服务": "https://www.mxdyeah.top/static/tvlogo/西宁生活服务.png", + "西宁综合": "https://www.mxdyeah.top/static/tvlogo/西宁综合.png", + "西安": "https://www.mxdyeah.top/static/tvlogo/西安.png", + "西安1": "https://www.mxdyeah.top/static/tvlogo/西安1.png", + "西安丝路": "https://www.mxdyeah.top/static/tvlogo/西安丝路.png", + "西安乐家购物": "https://www.mxdyeah.top/static/tvlogo/西安乐家购物.png", + "西安商务资讯": "https://www.mxdyeah.top/static/tvlogo/西安商务资讯.png", + "西安影视": "https://www.mxdyeah.top/static/tvlogo/西安影视.png", + "西安教育": "https://www.mxdyeah.top/static/tvlogo/西安教育.png", + "西安新闻综合": "https://www.mxdyeah.top/static/tvlogo/西安新闻综合.png", + "西安移动电视": "https://www.mxdyeah.top/static/tvlogo/西安移动电视.png", + "西安都市": "https://www.mxdyeah.top/static/tvlogo/西安都市.png", + "西昌综合": "https://www.mxdyeah.top/static/tvlogo/西昌综合.png", + "西藏卫视": "https://www.mxdyeah.top/static/tvlogo/西藏卫视.png", + "西藏影视文化": "https://www.mxdyeah.top/static/tvlogo/西藏影视文化.png", + "西藏经济生活": "https://www.mxdyeah.top/static/tvlogo/西藏经济生活.png", + "西藏藏语卫视": "https://www.mxdyeah.top/static/tvlogo/西藏藏语卫视.png", + "视纳华仁纪实": "https://www.mxdyeah.top/static/tvlogo/视纳华仁纪实.png", + "证券服务": "https://www.mxdyeah.top/static/tvlogo/证券服务.png", + "证券资讯": "https://www.mxdyeah.top/static/tvlogo/证券资讯.png", + "诏安": "https://www.mxdyeah.top/static/tvlogo/诏安.png", + "译制片": "https://www.mxdyeah.top/static/tvlogo/译制片.png", + "诚心": "https://www.mxdyeah.top/static/tvlogo/诚心.png", + "诚心电视": "https://www.mxdyeah.top/static/tvlogo/诚心电视.png", + "财富": "https://www.mxdyeah.top/static/tvlogo/财富.png", + "财富天下": "https://www.mxdyeah.top/static/tvlogo/财富天下.png", + "贵州2": "https://www.mxdyeah.top/static/tvlogo/贵州2.png", + "贵州3": "https://www.mxdyeah.top/static/tvlogo/贵州3.png", + "贵州4": "https://www.mxdyeah.top/static/tvlogo/贵州4.png", + "贵州5": "https://www.mxdyeah.top/static/tvlogo/贵州5.png", + "贵州6": "https://www.mxdyeah.top/static/tvlogo/贵州6.png", + "贵州7": "https://www.mxdyeah.top/static/tvlogo/贵州7.png", + "贵州公共": "https://www.mxdyeah.top/static/tvlogo/贵州公共.png", + "贵州卫视": "https://www.mxdyeah.top/static/tvlogo/贵州卫视.png", + "贵州大众生活": "https://www.mxdyeah.top/static/tvlogo/贵州大众生活.png", + "贵州文艺": "https://www.mxdyeah.top/static/tvlogo/贵州文艺.png", + "贵州旅游": "https://www.mxdyeah.top/static/tvlogo/贵州旅游.png", + "贵州科教健康": "https://www.mxdyeah.top/static/tvlogo/贵州科教健康.png", + "贵州移动电视": "https://www.mxdyeah.top/static/tvlogo/贵州移动电视.png", + "贵州经济": "https://www.mxdyeah.top/static/tvlogo/贵州经济.png", + "贵阳": "https://www.mxdyeah.top/static/tvlogo/贵阳.png", + "赣州公共": "https://www.mxdyeah.top/static/tvlogo/赣州公共.png", + "赣州教育": "https://www.mxdyeah.top/static/tvlogo/赣州教育.png", + "赣州新闻综合": "https://www.mxdyeah.top/static/tvlogo/赣州新闻综合.png", + "赤峰": "https://www.mxdyeah.top/static/tvlogo/赤峰.png", + "赤峰影视娱乐": "https://www.mxdyeah.top/static/tvlogo/赤峰影视娱乐.png", + "赤峰新闻综合": "https://www.mxdyeah.top/static/tvlogo/赤峰新闻综合.png", + "赤峰经济服务": "https://www.mxdyeah.top/static/tvlogo/赤峰经济服务.png", + "超人力霸王整套看": "https://www.mxdyeah.top/static/tvlogo/超人力霸王整套看.png", + "足球": "https://www.mxdyeah.top/static/tvlogo/足球.png", + "车迷": "https://www.mxdyeah.top/static/tvlogo/车迷.png", + "车迷TV": "https://www.mxdyeah.top/static/tvlogo/车迷TV.png", + "轮播": "https://www.mxdyeah.top/static/tvlogo/轮播.png", + "辽宁体育": "https://www.mxdyeah.top/static/tvlogo/辽宁体育.png", + "辽宁公共": "https://www.mxdyeah.top/static/tvlogo/辽宁公共.png", + "辽宁北方": "https://www.mxdyeah.top/static/tvlogo/辽宁北方.png", + "辽宁卫视": "https://www.mxdyeah.top/static/tvlogo/辽宁卫视.png", + "辽宁影视": "https://www.mxdyeah.top/static/tvlogo/辽宁影视.png", + "辽宁影视剧": "https://www.mxdyeah.top/static/tvlogo/辽宁影视剧.png", + "辽宁教育青少": "https://www.mxdyeah.top/static/tvlogo/辽宁教育青少.png", + "辽宁生活": "https://www.mxdyeah.top/static/tvlogo/辽宁生活.png", + "辽宁经济": "https://www.mxdyeah.top/static/tvlogo/辽宁经济.png", + "辽宁都市": "https://www.mxdyeah.top/static/tvlogo/辽宁都市.png", + "辽宁青少": "https://www.mxdyeah.top/static/tvlogo/辽宁青少.png", + "辽阳": "https://www.mxdyeah.top/static/tvlogo/辽阳.png", + "达拉特旗综合": "https://www.mxdyeah.top/static/tvlogo/达拉特旗综合.png", + "达文西": "https://www.mxdyeah.top/static/tvlogo/达文西.png", + "运通财经": "https://www.mxdyeah.top/static/tvlogo/运通财经.png", + "连城": "https://www.mxdyeah.top/static/tvlogo/连城.png", + "连山": "https://www.mxdyeah.top/static/tvlogo/连山.png", + "连江": "https://www.mxdyeah.top/static/tvlogo/连江.png", + "迪士尼": "https://www.mxdyeah.top/static/tvlogo/迪士尼.png", + "迪士尼XD": "https://www.mxdyeah.top/static/tvlogo/迪士尼XD.png", + "通江新闻": "https://www.mxdyeah.top/static/tvlogo/通江新闻.png", + "通辽": "https://www.mxdyeah.top/static/tvlogo/通辽.png", + "通辽城市服务": "https://www.mxdyeah.top/static/tvlogo/通辽城市服务.png", + "通辽新闻综合": "https://www.mxdyeah.top/static/tvlogo/通辽新闻综合.png", + "通辽蒙语": "https://www.mxdyeah.top/static/tvlogo/通辽蒙语.png", + "邵武": "https://www.mxdyeah.top/static/tvlogo/邵武.png", + "郎溪影视": "https://www.mxdyeah.top/static/tvlogo/郎溪影视.png", + "郎溪新闻": "https://www.mxdyeah.top/static/tvlogo/郎溪新闻.png", + "郑州": "https://www.mxdyeah.top/static/tvlogo/郑州.png", + "郓城新闻": "https://www.mxdyeah.top/static/tvlogo/郓城新闻.png", + "都市剧场": "https://www.mxdyeah.top/static/tvlogo/都市剧场.png", + "鄂尔多斯": "https://www.mxdyeah.top/static/tvlogo/鄂尔多斯.png", + "鄂尔多斯新闻综合": "https://www.mxdyeah.top/static/tvlogo/鄂尔多斯新闻综合.png", + "鄂尔多斯经济服务": "https://www.mxdyeah.top/static/tvlogo/鄂尔多斯经济服务.png", + "鄂尔多斯蒙语": "https://www.mxdyeah.top/static/tvlogo/鄂尔多斯蒙语.png", + "采昌影剧": "https://www.mxdyeah.top/static/tvlogo/采昌影剧.png", + "重广融媒": "https://www.mxdyeah.top/static/tvlogo/重广融媒.png", + "重庆": "https://www.mxdyeah.top/static/tvlogo/重庆.png", + "重庆农村": "https://www.mxdyeah.top/static/tvlogo/重庆农村.png", + "重庆卫视": "https://www.mxdyeah.top/static/tvlogo/重庆卫视.png", + "重庆少儿": "https://www.mxdyeah.top/static/tvlogo/重庆少儿.png", + "重庆影视": "https://www.mxdyeah.top/static/tvlogo/重庆影视.png", + "重庆文体娱乐": "https://www.mxdyeah.top/static/tvlogo/重庆文体娱乐.png", + "重庆新农村": "https://www.mxdyeah.top/static/tvlogo/重庆新农村.png", + "重庆新闻": "https://www.mxdyeah.top/static/tvlogo/重庆新闻.png", + "重庆时尚生活": "https://www.mxdyeah.top/static/tvlogo/重庆时尚生活.png", + "重庆汽摩": "https://www.mxdyeah.top/static/tvlogo/重庆汽摩.png", + "重庆社会与法": "https://www.mxdyeah.top/static/tvlogo/重庆社会与法.png", + "重庆科教": "https://www.mxdyeah.top/static/tvlogo/重庆科教.png", + "重庆移动": "https://www.mxdyeah.top/static/tvlogo/重庆移动.png", + "重温经典": "https://www.mxdyeah.top/static/tvlogo/重温经典.png", + "金光": "https://www.mxdyeah.top/static/tvlogo/金光.png", + "金光布袋戏": "https://www.mxdyeah.top/static/tvlogo/金光布袋戏.png", + "金华公共": "https://www.mxdyeah.top/static/tvlogo/金华公共.png", + "金砖": "https://www.mxdyeah.top/static/tvlogo/金砖.png", + "金砖电视": "https://www.mxdyeah.top/static/tvlogo/金砖电视.png", + "金色": "https://www.mxdyeah.top/static/tvlogo/金色.png", + "金色学堂": "https://www.mxdyeah.top/static/tvlogo/金色学堂.png", + "金鹰卡通": "https://www.mxdyeah.top/static/tvlogo/金鹰卡通.png", + "金鹰纪实": "https://www.mxdyeah.top/static/tvlogo/金鹰纪实.png", + "钱江都市": "https://www.mxdyeah.top/static/tvlogo/钱江都市.png", + "铁岭": "https://www.mxdyeah.top/static/tvlogo/铁岭.png", + "铜川": "https://www.mxdyeah.top/static/tvlogo/铜川.png", + "银川": "https://www.mxdyeah.top/static/tvlogo/银川.png", + "银川公共": "https://www.mxdyeah.top/static/tvlogo/银川公共.png", + "银川文体": "https://www.mxdyeah.top/static/tvlogo/银川文体.png", + "银川生活": "https://www.mxdyeah.top/static/tvlogo/银川生活.png", + "锦州": "https://www.mxdyeah.top/static/tvlogo/锦州.png", + "镇坪": "https://www.mxdyeah.top/static/tvlogo/镇坪.png", + "镜电视新闻": "https://www.mxdyeah.top/static/tvlogo/镜电视新闻.png", + "长乐": "https://www.mxdyeah.top/static/tvlogo/长乐.png", + "长安": "https://www.mxdyeah.top/static/tvlogo/长安.png", + "长影": "https://www.mxdyeah.top/static/tvlogo/长影.png", + "长春": "https://www.mxdyeah.top/static/tvlogo/长春.png", + "长汀": "https://www.mxdyeah.top/static/tvlogo/长汀.png", + "长沙": "https://www.mxdyeah.top/static/tvlogo/长沙.png", + "长沙女性": "https://www.mxdyeah.top/static/tvlogo/长沙女性.png", + "长沙影视": "https://www.mxdyeah.top/static/tvlogo/长沙影视.png", + "长沙政法": "https://www.mxdyeah.top/static/tvlogo/长沙政法.png", + "长沙新闻": "https://www.mxdyeah.top/static/tvlogo/长沙新闻.png", + "长泰": "https://www.mxdyeah.top/static/tvlogo/长泰.png", + "闽侯": "https://www.mxdyeah.top/static/tvlogo/闽侯.png", + "阜新": "https://www.mxdyeah.top/static/tvlogo/阜新.png", + "阳光卫视": "https://www.mxdyeah.top/static/tvlogo/阳光卫视.png", + "阿拉善": "https://www.mxdyeah.top/static/tvlogo/阿拉善.png", + "陇县": "https://www.mxdyeah.top/static/tvlogo/陇县.png", + "陈仓": "https://www.mxdyeah.top/static/tvlogo/陈仓.png", + "陕西乐家购物": "https://www.mxdyeah.top/static/tvlogo/陕西乐家购物.png", + "陕西体育休闲": "https://www.mxdyeah.top/static/tvlogo/陕西体育休闲.png", + "陕西公共": "https://www.mxdyeah.top/static/tvlogo/陕西公共.png", + "陕西农林": "https://www.mxdyeah.top/static/tvlogo/陕西农林.png", + "陕西卫视": "https://www.mxdyeah.top/static/tvlogo/陕西卫视.png", + "陕西影视": "https://www.mxdyeah.top/static/tvlogo/陕西影视.png", + "陕西新闻资讯": "https://www.mxdyeah.top/static/tvlogo/陕西新闻资讯.png", + "陕西生活": "https://www.mxdyeah.top/static/tvlogo/陕西生活.png", + "陕西西部电影": "https://www.mxdyeah.top/static/tvlogo/陕西西部电影.png", + "陕西都市青春": "https://www.mxdyeah.top/static/tvlogo/陕西都市青春.png", + "陶瓷": "https://www.mxdyeah.top/static/tvlogo/陶瓷.png", + "集美": "https://www.mxdyeah.top/static/tvlogo/集美.png", + "霞浦": "https://www.mxdyeah.top/static/tvlogo/霞浦.png", + "霹雳台湾": "https://www.mxdyeah.top/static/tvlogo/霹雳台湾.png", + "青岛1": "https://www.mxdyeah.top/static/tvlogo/青岛1.png", + "青岛2": "https://www.mxdyeah.top/static/tvlogo/青岛2.png", + "青岛3": "https://www.mxdyeah.top/static/tvlogo/青岛3.png", + "青年学苑": "https://www.mxdyeah.top/static/tvlogo/青年学苑.png", + "青海": "https://www.mxdyeah.top/static/tvlogo/青海.png", + "青海卫视": "https://www.mxdyeah.top/static/tvlogo/青海卫视.png", + "青海经视": "https://www.mxdyeah.top/static/tvlogo/青海经视.png", + "青海都市": "https://www.mxdyeah.top/static/tvlogo/青海都市.png", + "靓妆": "https://www.mxdyeah.top/static/tvlogo/靓妆.png", + "靓装": "https://www.mxdyeah.top/static/tvlogo/靓装.png", + "靖天卡通": "https://www.mxdyeah.top/static/tvlogo/靖天卡通.png", + "靖天国际": "https://www.mxdyeah.top/static/tvlogo/靖天国际.png", + "靖天娱乐": "https://www.mxdyeah.top/static/tvlogo/靖天娱乐.png", + "靖天戏剧": "https://www.mxdyeah.top/static/tvlogo/靖天戏剧.png", + "靖天日本": "https://www.mxdyeah.top/static/tvlogo/靖天日本.png", + "靖天映画": "https://www.mxdyeah.top/static/tvlogo/靖天映画.png", + "靖天欢乐": "https://www.mxdyeah.top/static/tvlogo/靖天欢乐.png", + "靖天电影": "https://www.mxdyeah.top/static/tvlogo/靖天电影.png", + "靖天综合": "https://www.mxdyeah.top/static/tvlogo/靖天综合.png", + "靖天育乐": "https://www.mxdyeah.top/static/tvlogo/靖天育乐.png", + "靖天资讯": "https://www.mxdyeah.top/static/tvlogo/靖天资讯.png", + "靖洋卡通": "https://www.mxdyeah.top/static/tvlogo/靖洋卡通.png", + "靖洋卡通NICEBINGO": "https://www.mxdyeah.top/static/tvlogo/靖洋卡通NICEBINGO.png", + "靖洋戏剧": "https://www.mxdyeah.top/static/tvlogo/靖洋戏剧.png", + "非凡商业": "https://www.mxdyeah.top/static/tvlogo/非凡商业.png", + "非凡新闻": "https://www.mxdyeah.top/static/tvlogo/非凡新闻.png", + "鞍山": "https://www.mxdyeah.top/static/tvlogo/鞍山.png", + "韩国娱乐": "https://www.mxdyeah.top/static/tvlogo/韩国娱乐.png", + "韩国娱乐台KMTV": "https://www.mxdyeah.top/static/tvlogo/韩国娱乐台KMTV.png", + "韩国育乐": "https://www.mxdyeah.top/static/tvlogo/韩国育乐.png", + "韩城": "https://www.mxdyeah.top/static/tvlogo/韩城.png", + "韶关公共": "https://www.mxdyeah.top/static/tvlogo/韶关公共.png", + "韶关新闻综合": "https://www.mxdyeah.top/static/tvlogo/韶关新闻综合.png", + "韶关综合": "https://www.mxdyeah.top/static/tvlogo/韶关综合.png", + "韶关绿色生活": "https://www.mxdyeah.top/static/tvlogo/韶关绿色生活.png", + "风云剧场": "https://www.mxdyeah.top/static/tvlogo/风云剧场.png", + "风云足球": "https://www.mxdyeah.top/static/tvlogo/风云足球.png", + "风云音乐": "https://www.mxdyeah.top/static/tvlogo/风云音乐.png", + "风尚生活": "https://www.mxdyeah.top/static/tvlogo/风尚生活.png", + "风尚购物": "https://www.mxdyeah.top/static/tvlogo/风尚购物.png", + "风尚音乐": "https://www.mxdyeah.top/static/tvlogo/风尚音乐.png", + "饶平": "https://www.mxdyeah.top/static/tvlogo/饶平.png", + "香港603": "https://www.mxdyeah.top/static/tvlogo/香港603.png", + "香港卫视": "https://www.mxdyeah.top/static/tvlogo/香港卫视.png", + "香港国际财经": "https://www.mxdyeah.top/static/tvlogo/香港国际财经.png", + "香港开电视": "https://www.mxdyeah.top/static/tvlogo/香港开电视.png", + "香港福克斯": "https://www.mxdyeah.top/static/tvlogo/香港福克斯.png", + "香蕉": "https://www.mxdyeah.top/static/tvlogo/香蕉.png", + "马拉松": "https://www.mxdyeah.top/static/tvlogo/马拉松.png", + "高县综合": "https://www.mxdyeah.top/static/tvlogo/高县综合.png", + "高尔夫": "https://www.mxdyeah.top/static/tvlogo/高尔夫.png", + "高尔夫网球": "https://www.mxdyeah.top/static/tvlogo/高尔夫网球.png", + "高清剧场": "https://www.mxdyeah.top/static/tvlogo/高清剧场.png", + "高清卡通剧场": "https://www.mxdyeah.top/static/tvlogo/高清卡通剧场.png", + "高清大众影视": "https://www.mxdyeah.top/static/tvlogo/高清大众影视.png", + "高清家庭剧场": "https://www.mxdyeah.top/static/tvlogo/高清家庭剧场.png", + "高清家庭影院": "https://www.mxdyeah.top/static/tvlogo/高清家庭影院.png", + "高清影院": "https://www.mxdyeah.top/static/tvlogo/高清影院.png", + "高清探索": "https://www.mxdyeah.top/static/tvlogo/高清探索.png", + "高清综合": "https://www.mxdyeah.top/static/tvlogo/高清综合.png", + "高点综合": "https://www.mxdyeah.top/static/tvlogo/高点综合.png", + "高点育乐": "https://www.mxdyeah.top/static/tvlogo/高点育乐.png", + "魅力时尚": "https://www.mxdyeah.top/static/tvlogo/魅力时尚.png", + "魅力足球": "https://www.mxdyeah.top/static/tvlogo/魅力足球.png", + "魅力音乐": "https://www.mxdyeah.top/static/tvlogo/魅力音乐.png", + "鹤山": "https://www.mxdyeah.top/static/tvlogo/鹤山.png", + "麟游": "https://www.mxdyeah.top/static/tvlogo/麟游.png", + "黄河卫视": "https://www.mxdyeah.top/static/tvlogo/黄河卫视.png", + "黄金华剧": "https://www.mxdyeah.top/static/tvlogo/黄金华剧.png", + "黄金翡翠": "https://www.mxdyeah.top/static/tvlogo/黄金翡翠.png", + "黄陵": "https://www.mxdyeah.top/static/tvlogo/黄陵.png", + "黎平综合": "https://www.mxdyeah.top/static/tvlogo/黎平综合.png", + "黑莓动画": "https://www.mxdyeah.top/static/tvlogo/黑莓动画.png", + "黑莓电影": "https://www.mxdyeah.top/static/tvlogo/黑莓电影.png", + "黑莓电竞": "https://www.mxdyeah.top/static/tvlogo/黑莓电竞.png", + "黑龙江公共农村": "https://www.mxdyeah.top/static/tvlogo/黑龙江公共农村.png", + "黑龙江卫视": "https://www.mxdyeah.top/static/tvlogo/黑龙江卫视.png", + "黑龙江少儿": "https://www.mxdyeah.top/static/tvlogo/黑龙江少儿.png", + "黑龙江影视": "https://www.mxdyeah.top/static/tvlogo/黑龙江影视.png", + "黑龙江文体": "https://www.mxdyeah.top/static/tvlogo/黑龙江文体.png", + "黑龙江新闻法治": "https://www.mxdyeah.top/static/tvlogo/黑龙江新闻法治.png", + "黑龙江都市": "https://www.mxdyeah.top/static/tvlogo/黑龙江都市.png", + "龙华偶像": "https://www.mxdyeah.top/static/tvlogo/龙华偶像.png", + "龙华动画": "https://www.mxdyeah.top/static/tvlogo/龙华动画.png", + "龙华卡通": "https://www.mxdyeah.top/static/tvlogo/龙华卡通.png", + "龙华影剧": "https://www.mxdyeah.top/static/tvlogo/龙华影剧.png", + "龙华戏剧": "https://www.mxdyeah.top/static/tvlogo/龙华戏剧.png", + "龙华日韩": "https://www.mxdyeah.top/static/tvlogo/龙华日韩.png", + "龙华洋片": "https://www.mxdyeah.top/static/tvlogo/龙华洋片.png", + "龙华电影": "https://www.mxdyeah.top/static/tvlogo/龙华电影.png", + "龙华经典": "https://www.mxdyeah.top/static/tvlogo/龙华经典.png", + "龙岩": "https://www.mxdyeah.top/static/tvlogo/龙岩.png", + "龙海": "https://www.mxdyeah.top/static/tvlogo/龙海.png", + "龙港": "https://www.mxdyeah.top/static/tvlogo/龙港.png", + "龙祥时代": "https://www.mxdyeah.top/static/tvlogo/龙祥时代.png", + "龙祥时代电影": "https://www.mxdyeah.top/static/tvlogo/龙祥时代电影.png", + "龙祥电影": "https://www.mxdyeah.top/static/tvlogo/龙祥电影.png" +} \ No newline at end of file diff --git a/assets/html/favicon.ico b/assets/html/favicon.ico new file mode 100644 index 0000000..cb8af7a Binary files /dev/null and b/assets/html/favicon.ico differ diff --git a/assets/html/login.html b/assets/html/login.html new file mode 100644 index 0000000..ef67ac0 --- /dev/null +++ b/assets/html/login.html @@ -0,0 +1,63 @@ + + +
+检测失败,请检查服务器。
'; + } + }; + + xhr.onerror = function () { + wrapper.innerHTML += '请求出错,请检查网络连接。
'; + }; + + xhr.send(); +} + +// 显示版本更新日志 +function showVersionLog(doCheckUpdate = false) { + fetch(`manage.php?get_version_log=true&do_check_update=${doCheckUpdate}`) + .then(response => response.json()) + .then(data => { + if (data.success) { + if (!doCheckUpdate || data.is_updated) { + showModalWithMessage("versionLogModal", "versionLogMessage", data.content); + } + } else { + showMessageModal(data.message || '获取版本日志失败'); + } + }) + .catch(() => { + showMessageModal('无法获取版本日志,请稍后重试'); + }); +} + +// 显示使用说明 +function showHelpModal() { + showModalWithMessage("helpModal"); +} + +// 更新 EPG 内容 +function updateEpgContent(epgData) { + document.getElementById('epgTitle').innerHTML = epgData.channel; + document.getElementById('epgSource').innerHTML = `来源:${epgData.source}`; + document.getElementById('epgDate').innerHTML = epgData.date; + var epgContent = document.getElementById("epgContent"); + epgContent.value = epgData.epg; + epgContent.scrollTop = 0; +} + +// 更新日志表格 +function updateLogTable(logData) { + var logTableBody = document.querySelector("#logTable tbody"); + logTableBody.innerHTML = ''; + + logData.forEach(log => { + var row = document.createElement("tr"); + row.innerHTML = ` +
+ */
+final class LazyCommand extends Command
+{
+ private \Closure|Command $command;
+ private ?bool $isEnabled;
+
+ public function __construct(string $name, array $aliases, string $description, bool $isHidden, \Closure $commandFactory, ?bool $isEnabled = true)
+ {
+ $this->setName($name)
+ ->setAliases($aliases)
+ ->setHidden($isHidden)
+ ->setDescription($description);
+
+ $this->command = $commandFactory;
+ $this->isEnabled = $isEnabled;
+ }
+
+ public function ignoreValidationErrors(): void
+ {
+ $this->getCommand()->ignoreValidationErrors();
+ }
+
+ public function setApplication(?Application $application = null): void
+ {
+ if (1 > \func_num_args()) {
+ trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__);
+ }
+ if ($this->command instanceof parent) {
+ $this->command->setApplication($application);
+ }
+
+ parent::setApplication($application);
+ }
+
+ public function setHelperSet(HelperSet $helperSet): void
+ {
+ if ($this->command instanceof parent) {
+ $this->command->setHelperSet($helperSet);
+ }
+
+ parent::setHelperSet($helperSet);
+ }
+
+ public function isEnabled(): bool
+ {
+ return $this->isEnabled ?? $this->getCommand()->isEnabled();
+ }
+
+ public function run(InputInterface $input, OutputInterface $output): int
+ {
+ return $this->getCommand()->run($input, $output);
+ }
+
+ public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
+ {
+ $this->getCommand()->complete($input, $suggestions);
+ }
+
+ public function setCode(callable $code): static
+ {
+ $this->getCommand()->setCode($code);
+
+ return $this;
+ }
+
+ /**
+ * @internal
+ */
+ public function mergeApplicationDefinition(bool $mergeArgs = true): void
+ {
+ $this->getCommand()->mergeApplicationDefinition($mergeArgs);
+ }
+
+ public function setDefinition(array|InputDefinition $definition): static
+ {
+ $this->getCommand()->setDefinition($definition);
+
+ return $this;
+ }
+
+ public function getDefinition(): InputDefinition
+ {
+ return $this->getCommand()->getDefinition();
+ }
+
+ public function getNativeDefinition(): InputDefinition
+ {
+ return $this->getCommand()->getNativeDefinition();
+ }
+
+ /**
+ * @param array|\Closure(CompletionInput,CompletionSuggestions):list
+ */
+ function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void
+ {
+ @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-ctype/Ctype.php b/assets/opencc/vendor/symfony/polyfill-ctype/Ctype.php
new file mode 100644
index 0000000..ba75a2c
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-ctype/Ctype.php
@@ -0,0 +1,232 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Ctype;
+
+/**
+ * Ctype implementation through regex.
+ *
+ * @internal
+ *
+ * @author Gert de Pagter
+ *
+ * @internal
+ */
+final class Grapheme
+{
+ // (CRLF|([ZWNJ-ZWJ]|T+|L*(LV?V+|LV|LVT)T*|L+|[^Control])[Extend]*|[Control])
+ // This regular expression is a work around for http://bugs.exim.org/1279
+ public const GRAPHEME_CLUSTER_RX = '(?:\r\n|(?:[ -~\x{200C}\x{200D}]|[ᆨ-ᇹ]+|[ᄀ-ᅟ]*(?:[가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기까깨꺄꺠꺼께껴꼐꼬꽈꽤꾀꾜꾸꿔꿰뀌뀨끄끠끼나내냐냬너네녀녜노놔놰뇌뇨누눠눼뉘뉴느늬니다대댜댸더데뎌뎨도돠돼되됴두둬뒈뒤듀드듸디따때땨떄떠떼뗘뗴또똬뙈뙤뚀뚜뚸뛔뛰뜌뜨띄띠라래랴럐러레려례로롸뢔뢰료루뤄뤠뤼류르릐리마매먀먜머메며몌모뫄뫠뫼묘무뭐뭬뮈뮤므믜미바배뱌뱨버베벼볘보봐봬뵈뵤부붜붸뷔뷰브븨비빠빼뺘뺴뻐뻬뼈뼤뽀뽜뽸뾔뾰뿌뿨쀄쀠쀼쁘쁴삐사새샤섀서세셔셰소솨쇄쇠쇼수숴쉐쉬슈스싀시싸쌔쌰썌써쎄쎠쎼쏘쏴쐐쐬쑈쑤쒀쒜쒸쓔쓰씌씨아애야얘어에여예오와왜외요우워웨위유으의이자재쟈쟤저제져졔조좌좨죄죠주줘줴쥐쥬즈즤지짜째쨔쨰쩌쩨쪄쪠쪼쫘쫴쬐쬬쭈쭤쮀쮜쮸쯔쯰찌차채챠챼처체쳐쳬초촤쵀최쵸추춰췌취츄츠츼치카캐캬컈커케켜켸코콰쾌쾨쿄쿠쿼퀘퀴큐크킈키타태탸턔터테텨톄토톼퇘퇴툐투퉈퉤튀튜트틔티파패퍄퍠퍼페펴폐포퐈퐤푀표푸풔풰퓌퓨프픠피하해햐햬허헤혀혜호화홰회효후훠훼휘휴흐희히]?[ᅠ-ᆢ]+|[가-힣])[ᆨ-ᇹ]*|[ᄀ-ᅟ]+|[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}])[\p{Mn}\p{Me}\x{09BE}\x{09D7}\x{0B3E}\x{0B57}\x{0BBE}\x{0BD7}\x{0CC2}\x{0CD5}\x{0CD6}\x{0D3E}\x{0D57}\x{0DCF}\x{0DDF}\x{200C}\x{200D}\x{1D165}\x{1D16E}-\x{1D172}]*|[\p{Cc}\p{Cf}\p{Zl}\p{Zp}])';
+
+ private const CASE_FOLD = [
+ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
+ ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'],
+ ];
+
+ public static function grapheme_extract($s, $size, $type = \GRAPHEME_EXTR_COUNT, $start = 0, &$next = 0)
+ {
+ if (0 > $start) {
+ $start = \strlen($s) + $start;
+ }
+
+ if (!\is_scalar($s)) {
+ $hasError = false;
+ set_error_handler(function () use (&$hasError) { $hasError = true; });
+ $next = substr($s, $start);
+ restore_error_handler();
+ if ($hasError) {
+ substr($s, $start);
+ $s = '';
+ } else {
+ $s = $next;
+ }
+ } else {
+ $s = substr($s, $start);
+ }
+ $size = (int) $size;
+ $type = (int) $type;
+ $start = (int) $start;
+
+ if (\GRAPHEME_EXTR_COUNT !== $type && \GRAPHEME_EXTR_MAXBYTES !== $type && \GRAPHEME_EXTR_MAXCHARS !== $type) {
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError('grapheme_extract(): Argument #3 ($type) must be one of GRAPHEME_EXTR_COUNT, GRAPHEME_EXTR_MAXBYTES, or GRAPHEME_EXTR_MAXCHARS');
+ }
+
+ if (!isset($s[0]) || 0 > $size || 0 > $start) {
+ return false;
+ }
+ if (0 === $size) {
+ return '';
+ }
+
+ $next = $start;
+
+ $s = preg_split('/('.SYMFONY_GRAPHEME_CLUSTER_RX.')/u', "\r\n".$s, $size + 1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE);
+
+ if (!isset($s[1])) {
+ return false;
+ }
+
+ $i = 1;
+ $ret = '';
+
+ do {
+ if (\GRAPHEME_EXTR_COUNT === $type) {
+ --$size;
+ } elseif (\GRAPHEME_EXTR_MAXBYTES === $type) {
+ $size -= \strlen($s[$i]);
+ } else {
+ $size -= iconv_strlen($s[$i], 'UTF-8//IGNORE');
+ }
+
+ if ($size >= 0) {
+ $ret .= $s[$i];
+ }
+ } while (isset($s[++$i]) && $size > 0);
+
+ $next += \strlen($ret);
+
+ return $ret;
+ }
+
+ public static function grapheme_strlen($s)
+ {
+ preg_replace('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', '', $s, -1, $len);
+
+ return 0 === $len && '' !== $s ? null : $len;
+ }
+
+ public static function grapheme_substr($s, $start, $len = null)
+ {
+ if (null === $len) {
+ $len = 2147483647;
+ }
+
+ preg_match_all('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', $s, $s);
+
+ $slen = \count($s[0]);
+ $start = (int) $start;
+
+ if (0 > $start) {
+ $start += $slen;
+ }
+ if (0 > $start) {
+ if (\PHP_VERSION_ID < 80000) {
+ return false;
+ }
+
+ $start = 0;
+ }
+ if ($start >= $slen) {
+ return \PHP_VERSION_ID >= 80000 ? '' : false;
+ }
+
+ $rem = $slen - $start;
+
+ if (0 > $len) {
+ $len += $rem;
+ }
+ if (0 === $len) {
+ return '';
+ }
+ if (0 > $len) {
+ return \PHP_VERSION_ID >= 80000 ? '' : false;
+ }
+ if ($len > $rem) {
+ $len = $rem;
+ }
+
+ return implode('', \array_slice($s[0], $start, $len));
+ }
+
+ public static function grapheme_strpos($s, $needle, $offset = 0)
+ {
+ return self::grapheme_position($s, $needle, $offset, 0);
+ }
+
+ public static function grapheme_stripos($s, $needle, $offset = 0)
+ {
+ return self::grapheme_position($s, $needle, $offset, 1);
+ }
+
+ public static function grapheme_strrpos($s, $needle, $offset = 0)
+ {
+ return self::grapheme_position($s, $needle, $offset, 2);
+ }
+
+ public static function grapheme_strripos($s, $needle, $offset = 0)
+ {
+ return self::grapheme_position($s, $needle, $offset, 3);
+ }
+
+ public static function grapheme_stristr($s, $needle, $beforeNeedle = false)
+ {
+ return mb_stristr($s, $needle, $beforeNeedle, 'UTF-8');
+ }
+
+ public static function grapheme_strstr($s, $needle, $beforeNeedle = false)
+ {
+ return mb_strstr($s, $needle, $beforeNeedle, 'UTF-8');
+ }
+
+ private static function grapheme_position($s, $needle, $offset, $mode)
+ {
+ $needle = (string) $needle;
+ if (80000 > \PHP_VERSION_ID && !preg_match('/./us', $needle)) {
+ return false;
+ }
+ $s = (string) $s;
+ if (!preg_match('/./us', $s)) {
+ return false;
+ }
+ if ($offset > 0) {
+ $s = self::grapheme_substr($s, $offset);
+ } elseif ($offset < 0) {
+ if (2 > $mode) {
+ $offset += self::grapheme_strlen($s);
+ $s = self::grapheme_substr($s, $offset);
+ if (0 > $offset) {
+ $offset = 0;
+ }
+ } elseif (0 > $offset += self::grapheme_strlen($needle)) {
+ $s = self::grapheme_substr($s, 0, $offset);
+ $offset = 0;
+ } else {
+ $offset = 0;
+ }
+ }
+
+ // As UTF-8 is self-synchronizing, and we have ensured the strings are valid UTF-8,
+ // we can use normal binary string functions here. For case-insensitive searches,
+ // case fold the strings first.
+ $caseInsensitive = $mode & 1;
+ $reverse = $mode & 2;
+ if ($caseInsensitive) {
+ // Use the same case folding mode as mbstring does for mb_stripos().
+ // Stick to SIMPLE case folding to avoid changing the length of the string, which
+ // might result in offsets being shifted.
+ $mode = \defined('MB_CASE_FOLD_SIMPLE') ? \MB_CASE_FOLD_SIMPLE : \MB_CASE_LOWER;
+ $s = mb_convert_case($s, $mode, 'UTF-8');
+ $needle = mb_convert_case($needle, $mode, 'UTF-8');
+
+ if (!\defined('MB_CASE_FOLD_SIMPLE')) {
+ $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s);
+ $needle = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $needle);
+ }
+ }
+ if ($reverse) {
+ $needlePos = strrpos($s, $needle);
+ } else {
+ $needlePos = strpos($s, $needle);
+ }
+
+ return false !== $needlePos ? self::grapheme_strlen(substr($s, 0, $needlePos)) + $offset : false;
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-grapheme/LICENSE b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/LICENSE
new file mode 100644
index 0000000..6e3afce
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-present 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/assets/opencc/vendor/symfony/polyfill-intl-grapheme/README.md b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/README.md
new file mode 100644
index 0000000..f55d92c
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/README.md
@@ -0,0 +1,31 @@
+Symfony Polyfill / Intl: Grapheme
+=================================
+
+This component provides a partial, native PHP implementation of the
+[Grapheme functions](https://php.net/intl.grapheme) from the
+[Intl](https://php.net/intl) extension.
+
+- [`grapheme_extract`](https://php.net/grapheme_extract): Extract a sequence of grapheme
+ clusters from a text buffer, which must be encoded in UTF-8
+- [`grapheme_stripos`](https://php.net/grapheme_stripos): Find position (in grapheme units)
+ of first occurrence of a case-insensitive string
+- [`grapheme_stristr`](https://php.net/grapheme_stristr): Returns part of haystack string
+ from the first occurrence of case-insensitive needle to the end of haystack
+- [`grapheme_strlen`](https://php.net/grapheme_strlen): Get string length in grapheme units
+- [`grapheme_strpos`](https://php.net/grapheme_strpos): Find position (in grapheme units)
+ of first occurrence of a string
+- [`grapheme_strripos`](https://php.net/grapheme_strripos): Find position (in grapheme units)
+ of last occurrence of a case-insensitive string
+- [`grapheme_strrpos`](https://php.net/grapheme_strrpos): Find position (in grapheme units)
+ of last occurrence of a string
+- [`grapheme_strstr`](https://php.net/grapheme_strstr): Returns part of haystack string from
+ the first occurrence of needle to the end of haystack
+- [`grapheme_substr`](https://php.net/grapheme_substr): Return part of a string
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-grapheme/bootstrap.php b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/bootstrap.php
new file mode 100644
index 0000000..a9ea03c
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/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\Intl\Grapheme as p;
+
+if (extension_loaded('intl')) {
+ return;
+}
+
+if (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!defined('GRAPHEME_EXTR_COUNT')) {
+ define('GRAPHEME_EXTR_COUNT', 0);
+}
+if (!defined('GRAPHEME_EXTR_MAXBYTES')) {
+ define('GRAPHEME_EXTR_MAXBYTES', 1);
+}
+if (!defined('GRAPHEME_EXTR_MAXCHARS')) {
+ define('GRAPHEME_EXTR_MAXCHARS', 2);
+}
+
+if (!function_exists('grapheme_extract')) {
+ function grapheme_extract($haystack, $size, $type = 0, $start = 0, &$next = 0) { return p\Grapheme::grapheme_extract($haystack, $size, $type, $start, $next); }
+}
+if (!function_exists('grapheme_stripos')) {
+ function grapheme_stripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_stripos($haystack, $needle, $offset); }
+}
+if (!function_exists('grapheme_stristr')) {
+ function grapheme_stristr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_stristr($haystack, $needle, $beforeNeedle); }
+}
+if (!function_exists('grapheme_strlen')) {
+ function grapheme_strlen($input) { return p\Grapheme::grapheme_strlen($input); }
+}
+if (!function_exists('grapheme_strpos')) {
+ function grapheme_strpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strpos($haystack, $needle, $offset); }
+}
+if (!function_exists('grapheme_strripos')) {
+ function grapheme_strripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strripos($haystack, $needle, $offset); }
+}
+if (!function_exists('grapheme_strrpos')) {
+ function grapheme_strrpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strrpos($haystack, $needle, $offset); }
+}
+if (!function_exists('grapheme_strstr')) {
+ function grapheme_strstr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_strstr($haystack, $needle, $beforeNeedle); }
+}
+if (!function_exists('grapheme_substr')) {
+ function grapheme_substr($string, $offset, $length = null) { return p\Grapheme::grapheme_substr($string, $offset, $length); }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php
new file mode 100644
index 0000000..b8c0786
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php
@@ -0,0 +1,50 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Intl\Grapheme as p;
+
+if (!defined('GRAPHEME_EXTR_COUNT')) {
+ define('GRAPHEME_EXTR_COUNT', 0);
+}
+if (!defined('GRAPHEME_EXTR_MAXBYTES')) {
+ define('GRAPHEME_EXTR_MAXBYTES', 1);
+}
+if (!defined('GRAPHEME_EXTR_MAXCHARS')) {
+ define('GRAPHEME_EXTR_MAXCHARS', 2);
+}
+
+if (!function_exists('grapheme_extract')) {
+ function grapheme_extract(?string $haystack, ?int $size, ?int $type = GRAPHEME_EXTR_COUNT, ?int $offset = 0, &$next = null): string|false { return p\Grapheme::grapheme_extract((string) $haystack, (int) $size, (int) $type, (int) $offset, $next); }
+}
+if (!function_exists('grapheme_stripos')) {
+ function grapheme_stripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_stripos((string) $haystack, (string) $needle, (int) $offset); }
+}
+if (!function_exists('grapheme_stristr')) {
+ function grapheme_stristr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_stristr((string) $haystack, (string) $needle, (bool) $beforeNeedle); }
+}
+if (!function_exists('grapheme_strlen')) {
+ function grapheme_strlen(?string $string): int|false|null { return p\Grapheme::grapheme_strlen((string) $string); }
+}
+if (!function_exists('grapheme_strpos')) {
+ function grapheme_strpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strpos((string) $haystack, (string) $needle, (int) $offset); }
+}
+if (!function_exists('grapheme_strripos')) {
+ function grapheme_strripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strripos((string) $haystack, (string) $needle, (int) $offset); }
+}
+if (!function_exists('grapheme_strrpos')) {
+ function grapheme_strrpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strrpos((string) $haystack, (string) $needle, (int) $offset); }
+}
+if (!function_exists('grapheme_strstr')) {
+ function grapheme_strstr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_strstr((string) $haystack, (string) $needle, (bool) $beforeNeedle); }
+}
+if (!function_exists('grapheme_substr')) {
+ function grapheme_substr(?string $string, ?int $offset, ?int $length = null): string|false { return p\Grapheme::grapheme_substr((string) $string, (int) $offset, $length); }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-grapheme/composer.json b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/composer.json
new file mode 100644
index 0000000..a20d3fa
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-grapheme/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "symfony/polyfill-intl-grapheme",
+ "type": "library",
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "grapheme"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/LICENSE b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/LICENSE
new file mode 100644
index 0000000..6e3afce
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-present 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/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
new file mode 100644
index 0000000..81704ab
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
@@ -0,0 +1,310 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Intl\Normalizer;
+
+/**
+ * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
+ *
+ * It has been validated with Unicode 6.3 Normalization Conformance Test.
+ * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
+ *
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+class Normalizer
+{
+ public const FORM_D = \Normalizer::FORM_D;
+ public const FORM_KD = \Normalizer::FORM_KD;
+ public const FORM_C = \Normalizer::FORM_C;
+ public const FORM_KC = \Normalizer::FORM_KC;
+ public const NFD = \Normalizer::NFD;
+ public const NFKD = \Normalizer::NFKD;
+ public const NFC = \Normalizer::NFC;
+ public const NFKC = \Normalizer::NFKC;
+
+ private static $C;
+ private static $D;
+ private static $KD;
+ private static $cC;
+ private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+ private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
+
+ public static function isNormalized(string $s, int $form = self::FORM_C)
+ {
+ if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) {
+ return false;
+ }
+ if (!isset($s[strspn($s, self::$ASCII)])) {
+ return true;
+ }
+ if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
+ return true;
+ }
+
+ return self::normalize($s, $form) === $s;
+ }
+
+ public static function normalize(string $s, int $form = self::FORM_C)
+ {
+ if (!preg_match('//u', $s)) {
+ return false;
+ }
+
+ switch ($form) {
+ case self::NFC: $C = true; $K = false; break;
+ case self::NFD: $C = false; $K = false; break;
+ case self::NFKC: $C = true; $K = true; break;
+ case self::NFKD: $C = false; $K = true; break;
+ default:
+ if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
+ return $s;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form');
+ }
+
+ if ('' === $s) {
+ return '';
+ }
+
+ if ($K && null === self::$KD) {
+ self::$KD = self::getData('compatibilityDecomposition');
+ }
+
+ if (null === self::$D) {
+ self::$D = self::getData('canonicalDecomposition');
+ self::$cC = self::getData('combiningClass');
+ }
+
+ if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) \ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
+ mb_internal_encoding('8bit');
+ }
+
+ $r = self::decompose($s, $K);
+
+ if ($C) {
+ if (null === self::$C) {
+ self::$C = self::getData('canonicalComposition');
+ }
+
+ $r = self::recompose($r);
+ }
+ if (null !== $mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
+
+ return $r;
+ }
+
+ private static function recompose($s)
+ {
+ $ASCII = self::$ASCII;
+ $compMap = self::$C;
+ $combClass = self::$cC;
+ $ulenMask = self::$ulenMask;
+
+ $result = $tail = '';
+
+ $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
+ $len = \strlen($s);
+
+ $lastUchr = substr($s, 0, $i);
+ $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
+
+ while ($i < $len) {
+ if ($s[$i] < "\x80") {
+ // ASCII chars
+
+ if ($tail) {
+ $lastUchr .= $tail;
+ $tail = '';
+ }
+
+ if ($j = strspn($s, $ASCII, $i + 1)) {
+ $lastUchr .= substr($s, $i, $j);
+ $i += $j;
+ }
+
+ $result .= $lastUchr;
+ $lastUchr = $s[$i];
+ $lastUcls = 0;
+ ++$i;
+ continue;
+ }
+
+ $ulen = $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+
+ if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
+ || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
+ || $lastUcls) {
+ // Table lookup and combining chars composition
+
+ $ucls = $combClass[$uchr] ?? 0;
+
+ if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
+ $lastUchr = $compMap[$lastUchr.$uchr];
+ } elseif ($lastUcls = $ucls) {
+ $tail .= $uchr;
+ } else {
+ if ($tail) {
+ $lastUchr .= $tail;
+ $tail = '';
+ }
+
+ $result .= $lastUchr;
+ $lastUchr = $uchr;
+ }
+ } else {
+ // Hangul chars
+
+ $L = \ord($lastUchr[2]) - 0x80;
+ $V = \ord($uchr[2]) - 0xA1;
+ $T = 0;
+
+ $uchr = substr($s, $i + $ulen, 3);
+
+ if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
+ $T = \ord($uchr[2]) - 0xA7;
+ 0 > $T && $T += 0x40;
+ $ulen += 3;
+ }
+
+ $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
+ $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
+ }
+
+ $i += $ulen;
+ }
+
+ return $result.$lastUchr.$tail;
+ }
+
+ private static function decompose($s, $c)
+ {
+ $result = '';
+
+ $ASCII = self::$ASCII;
+ $decompMap = self::$D;
+ $combClass = self::$cC;
+ $ulenMask = self::$ulenMask;
+ if ($c) {
+ $compatMap = self::$KD;
+ }
+
+ $c = [];
+ $i = 0;
+ $len = \strlen($s);
+
+ while ($i < $len) {
+ if ($s[$i] < "\x80") {
+ // ASCII chars
+
+ if ($c) {
+ ksort($c);
+ $result .= implode('', $c);
+ $c = [];
+ }
+
+ $j = 1 + strspn($s, $ASCII, $i + 1);
+ $result .= substr($s, $i, $j);
+ $i += $j;
+ continue;
+ }
+
+ $ulen = $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+
+ if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
+ // Table lookup
+
+ if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) {
+ $uchr = $j;
+
+ $j = \strlen($uchr);
+ $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
+
+ if ($ulen != $j) {
+ // Put trailing chars in $s
+
+ $j -= $ulen;
+ $i -= $j;
+
+ if (0 > $i) {
+ $s = str_repeat(' ', -$i).$s;
+ $len -= $i;
+ $i = 0;
+ }
+
+ while ($j--) {
+ $s[$i + $j] = $uchr[$ulen + $j];
+ }
+
+ $uchr = substr($uchr, 0, $ulen);
+ }
+ }
+ if (isset($combClass[$uchr])) {
+ // Combining chars, for sorting
+
+ if (!isset($c[$combClass[$uchr]])) {
+ $c[$combClass[$uchr]] = '';
+ }
+ $c[$combClass[$uchr]] .= $uchr;
+ continue;
+ }
+ } else {
+ // Hangul chars
+
+ $uchr = unpack('C*', $uchr);
+ $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
+
+ $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
+ ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
+
+ if ($j %= 28) {
+ $uchr .= $j < 25
+ ? ("\xE1\x86".\chr(0xA7 + $j))
+ : ("\xE1\x87".\chr(0x67 + $j));
+ }
+ }
+ if ($c) {
+ ksort($c);
+ $result .= implode('', $c);
+ $c = [];
+ }
+
+ $result .= $uchr;
+ }
+
+ if ($c) {
+ ksort($c);
+ $result .= implode('', $c);
+ }
+
+ return $result;
+ }
+
+ private static function getData($file)
+ {
+ if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
+ return require $file;
+ }
+
+ return false;
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/README.md b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/README.md
new file mode 100644
index 0000000..b9b762e
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/README.md
@@ -0,0 +1,14 @@
+Symfony Polyfill / Intl: Normalizer
+===================================
+
+This component provides a fallback implementation for the
+[`Normalizer`](https://php.net/Normalizer) class provided
+by the [Intl](https://php.net/intl) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
new file mode 100644
index 0000000..0fdfc89
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
@@ -0,0 +1,17 @@
+ 'À',
+ 'Á' => 'Á',
+ 'Â' => 'Â',
+ 'Ã' => 'Ã',
+ 'Ä' => 'Ä',
+ 'Å' => 'Å',
+ 'Ç' => 'Ç',
+ 'È' => 'È',
+ 'É' => 'É',
+ 'Ê' => 'Ê',
+ 'Ë' => 'Ë',
+ 'Ì' => 'Ì',
+ 'Í' => 'Í',
+ 'Î' => 'Î',
+ 'Ï' => 'Ï',
+ 'Ñ' => 'Ñ',
+ 'Ò' => 'Ò',
+ 'Ó' => 'Ó',
+ 'Ô' => 'Ô',
+ 'Õ' => 'Õ',
+ 'Ö' => 'Ö',
+ 'Ù' => 'Ù',
+ 'Ú' => 'Ú',
+ 'Û' => 'Û',
+ 'Ü' => 'Ü',
+ 'Ý' => 'Ý',
+ 'à' => 'à',
+ 'á' => 'á',
+ 'â' => 'â',
+ 'ã' => 'ã',
+ 'ä' => 'ä',
+ 'å' => 'å',
+ 'ç' => 'ç',
+ 'è' => 'è',
+ 'é' => 'é',
+ 'ê' => 'ê',
+ 'ë' => 'ë',
+ 'ì' => 'ì',
+ 'í' => 'í',
+ 'î' => 'î',
+ 'ï' => 'ï',
+ 'ñ' => 'ñ',
+ 'ò' => 'ò',
+ 'ó' => 'ó',
+ 'ô' => 'ô',
+ 'õ' => 'õ',
+ 'ö' => 'ö',
+ 'ù' => 'ù',
+ 'ú' => 'ú',
+ 'û' => 'û',
+ 'ü' => 'ü',
+ 'ý' => 'ý',
+ 'ÿ' => 'ÿ',
+ 'Ā' => 'Ā',
+ 'ā' => 'ā',
+ 'Ă' => 'Ă',
+ 'ă' => 'ă',
+ 'Ą' => 'Ą',
+ 'ą' => 'ą',
+ 'Ć' => 'Ć',
+ 'ć' => 'ć',
+ 'Ĉ' => 'Ĉ',
+ 'ĉ' => 'ĉ',
+ 'Ċ' => 'Ċ',
+ 'ċ' => 'ċ',
+ 'Č' => 'Č',
+ 'č' => 'č',
+ 'Ď' => 'Ď',
+ 'ď' => 'ď',
+ 'Ē' => 'Ē',
+ 'ē' => 'ē',
+ 'Ĕ' => 'Ĕ',
+ 'ĕ' => 'ĕ',
+ 'Ė' => 'Ė',
+ 'ė' => 'ė',
+ 'Ę' => 'Ę',
+ 'ę' => 'ę',
+ 'Ě' => 'Ě',
+ 'ě' => 'ě',
+ 'Ĝ' => 'Ĝ',
+ 'ĝ' => 'ĝ',
+ 'Ğ' => 'Ğ',
+ 'ğ' => 'ğ',
+ 'Ġ' => 'Ġ',
+ 'ġ' => 'ġ',
+ 'Ģ' => 'Ģ',
+ 'ģ' => 'ģ',
+ 'Ĥ' => 'Ĥ',
+ 'ĥ' => 'ĥ',
+ 'Ĩ' => 'Ĩ',
+ 'ĩ' => 'ĩ',
+ 'Ī' => 'Ī',
+ 'ī' => 'ī',
+ 'Ĭ' => 'Ĭ',
+ 'ĭ' => 'ĭ',
+ 'Į' => 'Į',
+ 'į' => 'į',
+ 'İ' => 'İ',
+ 'Ĵ' => 'Ĵ',
+ 'ĵ' => 'ĵ',
+ 'Ķ' => 'Ķ',
+ 'ķ' => 'ķ',
+ 'Ĺ' => 'Ĺ',
+ 'ĺ' => 'ĺ',
+ 'Ļ' => 'Ļ',
+ 'ļ' => 'ļ',
+ 'Ľ' => 'Ľ',
+ 'ľ' => 'ľ',
+ 'Ń' => 'Ń',
+ 'ń' => 'ń',
+ 'Ņ' => 'Ņ',
+ 'ņ' => 'ņ',
+ 'Ň' => 'Ň',
+ 'ň' => 'ň',
+ 'Ō' => 'Ō',
+ 'ō' => 'ō',
+ 'Ŏ' => 'Ŏ',
+ 'ŏ' => 'ŏ',
+ 'Ő' => 'Ő',
+ 'ő' => 'ő',
+ 'Ŕ' => 'Ŕ',
+ 'ŕ' => 'ŕ',
+ 'Ŗ' => 'Ŗ',
+ 'ŗ' => 'ŗ',
+ 'Ř' => 'Ř',
+ 'ř' => 'ř',
+ 'Ś' => 'Ś',
+ 'ś' => 'ś',
+ 'Ŝ' => 'Ŝ',
+ 'ŝ' => 'ŝ',
+ 'Ş' => 'Ş',
+ 'ş' => 'ş',
+ 'Š' => 'Š',
+ 'š' => 'š',
+ 'Ţ' => 'Ţ',
+ 'ţ' => 'ţ',
+ 'Ť' => 'Ť',
+ 'ť' => 'ť',
+ 'Ũ' => 'Ũ',
+ 'ũ' => 'ũ',
+ 'Ū' => 'Ū',
+ 'ū' => 'ū',
+ 'Ŭ' => 'Ŭ',
+ 'ŭ' => 'ŭ',
+ 'Ů' => 'Ů',
+ 'ů' => 'ů',
+ 'Ű' => 'Ű',
+ 'ű' => 'ű',
+ 'Ų' => 'Ų',
+ 'ų' => 'ų',
+ 'Ŵ' => 'Ŵ',
+ 'ŵ' => 'ŵ',
+ 'Ŷ' => 'Ŷ',
+ 'ŷ' => 'ŷ',
+ 'Ÿ' => 'Ÿ',
+ 'Ź' => 'Ź',
+ 'ź' => 'ź',
+ 'Ż' => 'Ż',
+ 'ż' => 'ż',
+ 'Ž' => 'Ž',
+ 'ž' => 'ž',
+ 'Ơ' => 'Ơ',
+ 'ơ' => 'ơ',
+ 'Ư' => 'Ư',
+ 'ư' => 'ư',
+ 'Ǎ' => 'Ǎ',
+ 'ǎ' => 'ǎ',
+ 'Ǐ' => 'Ǐ',
+ 'ǐ' => 'ǐ',
+ 'Ǒ' => 'Ǒ',
+ 'ǒ' => 'ǒ',
+ 'Ǔ' => 'Ǔ',
+ 'ǔ' => 'ǔ',
+ 'Ǖ' => 'Ǖ',
+ 'ǖ' => 'ǖ',
+ 'Ǘ' => 'Ǘ',
+ 'ǘ' => 'ǘ',
+ 'Ǚ' => 'Ǚ',
+ 'ǚ' => 'ǚ',
+ 'Ǜ' => 'Ǜ',
+ 'ǜ' => 'ǜ',
+ 'Ǟ' => 'Ǟ',
+ 'ǟ' => 'ǟ',
+ 'Ǡ' => 'Ǡ',
+ 'ǡ' => 'ǡ',
+ 'Ǣ' => 'Ǣ',
+ 'ǣ' => 'ǣ',
+ 'Ǧ' => 'Ǧ',
+ 'ǧ' => 'ǧ',
+ 'Ǩ' => 'Ǩ',
+ 'ǩ' => 'ǩ',
+ 'Ǫ' => 'Ǫ',
+ 'ǫ' => 'ǫ',
+ 'Ǭ' => 'Ǭ',
+ 'ǭ' => 'ǭ',
+ 'Ǯ' => 'Ǯ',
+ 'ǯ' => 'ǯ',
+ 'ǰ' => 'ǰ',
+ 'Ǵ' => 'Ǵ',
+ 'ǵ' => 'ǵ',
+ 'Ǹ' => 'Ǹ',
+ 'ǹ' => 'ǹ',
+ 'Ǻ' => 'Ǻ',
+ 'ǻ' => 'ǻ',
+ 'Ǽ' => 'Ǽ',
+ 'ǽ' => 'ǽ',
+ 'Ǿ' => 'Ǿ',
+ 'ǿ' => 'ǿ',
+ 'Ȁ' => 'Ȁ',
+ 'ȁ' => 'ȁ',
+ 'Ȃ' => 'Ȃ',
+ 'ȃ' => 'ȃ',
+ 'Ȅ' => 'Ȅ',
+ 'ȅ' => 'ȅ',
+ 'Ȇ' => 'Ȇ',
+ 'ȇ' => 'ȇ',
+ 'Ȉ' => 'Ȉ',
+ 'ȉ' => 'ȉ',
+ 'Ȋ' => 'Ȋ',
+ 'ȋ' => 'ȋ',
+ 'Ȍ' => 'Ȍ',
+ 'ȍ' => 'ȍ',
+ 'Ȏ' => 'Ȏ',
+ 'ȏ' => 'ȏ',
+ 'Ȑ' => 'Ȑ',
+ 'ȑ' => 'ȑ',
+ 'Ȓ' => 'Ȓ',
+ 'ȓ' => 'ȓ',
+ 'Ȕ' => 'Ȕ',
+ 'ȕ' => 'ȕ',
+ 'Ȗ' => 'Ȗ',
+ 'ȗ' => 'ȗ',
+ 'Ș' => 'Ș',
+ 'ș' => 'ș',
+ 'Ț' => 'Ț',
+ 'ț' => 'ț',
+ 'Ȟ' => 'Ȟ',
+ 'ȟ' => 'ȟ',
+ 'Ȧ' => 'Ȧ',
+ 'ȧ' => 'ȧ',
+ 'Ȩ' => 'Ȩ',
+ 'ȩ' => 'ȩ',
+ 'Ȫ' => 'Ȫ',
+ 'ȫ' => 'ȫ',
+ 'Ȭ' => 'Ȭ',
+ 'ȭ' => 'ȭ',
+ 'Ȯ' => 'Ȯ',
+ 'ȯ' => 'ȯ',
+ 'Ȱ' => 'Ȱ',
+ 'ȱ' => 'ȱ',
+ 'Ȳ' => 'Ȳ',
+ 'ȳ' => 'ȳ',
+ '΅' => '΅',
+ 'Ά' => 'Ά',
+ 'Έ' => 'Έ',
+ 'Ή' => 'Ή',
+ 'Ί' => 'Ί',
+ 'Ό' => 'Ό',
+ 'Ύ' => 'Ύ',
+ 'Ώ' => 'Ώ',
+ 'ΐ' => 'ΐ',
+ 'Ϊ' => 'Ϊ',
+ 'Ϋ' => 'Ϋ',
+ 'ά' => 'ά',
+ 'έ' => 'έ',
+ 'ή' => 'ή',
+ 'ί' => 'ί',
+ 'ΰ' => 'ΰ',
+ 'ϊ' => 'ϊ',
+ 'ϋ' => 'ϋ',
+ 'ό' => 'ό',
+ 'ύ' => 'ύ',
+ 'ώ' => 'ώ',
+ 'ϓ' => 'ϓ',
+ 'ϔ' => 'ϔ',
+ 'Ѐ' => 'Ѐ',
+ 'Ё' => 'Ё',
+ 'Ѓ' => 'Ѓ',
+ 'Ї' => 'Ї',
+ 'Ќ' => 'Ќ',
+ 'Ѝ' => 'Ѝ',
+ 'Ў' => 'Ў',
+ 'Й' => 'Й',
+ 'й' => 'й',
+ 'ѐ' => 'ѐ',
+ 'ё' => 'ё',
+ 'ѓ' => 'ѓ',
+ 'ї' => 'ї',
+ 'ќ' => 'ќ',
+ 'ѝ' => 'ѝ',
+ 'ў' => 'ў',
+ 'Ѷ' => 'Ѷ',
+ 'ѷ' => 'ѷ',
+ 'Ӂ' => 'Ӂ',
+ 'ӂ' => 'ӂ',
+ 'Ӑ' => 'Ӑ',
+ 'ӑ' => 'ӑ',
+ 'Ӓ' => 'Ӓ',
+ 'ӓ' => 'ӓ',
+ 'Ӗ' => 'Ӗ',
+ 'ӗ' => 'ӗ',
+ 'Ӛ' => 'Ӛ',
+ 'ӛ' => 'ӛ',
+ 'Ӝ' => 'Ӝ',
+ 'ӝ' => 'ӝ',
+ 'Ӟ' => 'Ӟ',
+ 'ӟ' => 'ӟ',
+ 'Ӣ' => 'Ӣ',
+ 'ӣ' => 'ӣ',
+ 'Ӥ' => 'Ӥ',
+ 'ӥ' => 'ӥ',
+ 'Ӧ' => 'Ӧ',
+ 'ӧ' => 'ӧ',
+ 'Ӫ' => 'Ӫ',
+ 'ӫ' => 'ӫ',
+ 'Ӭ' => 'Ӭ',
+ 'ӭ' => 'ӭ',
+ 'Ӯ' => 'Ӯ',
+ 'ӯ' => 'ӯ',
+ 'Ӱ' => 'Ӱ',
+ 'ӱ' => 'ӱ',
+ 'Ӳ' => 'Ӳ',
+ 'ӳ' => 'ӳ',
+ 'Ӵ' => 'Ӵ',
+ 'ӵ' => 'ӵ',
+ 'Ӹ' => 'Ӹ',
+ 'ӹ' => 'ӹ',
+ 'آ' => 'آ',
+ 'أ' => 'أ',
+ 'ؤ' => 'ؤ',
+ 'إ' => 'إ',
+ 'ئ' => 'ئ',
+ 'ۀ' => 'ۀ',
+ 'ۂ' => 'ۂ',
+ 'ۓ' => 'ۓ',
+ 'ऩ' => 'ऩ',
+ 'ऱ' => 'ऱ',
+ 'ऴ' => 'ऴ',
+ 'ো' => 'ো',
+ 'ৌ' => 'ৌ',
+ 'ୈ' => 'ୈ',
+ 'ୋ' => 'ୋ',
+ 'ୌ' => 'ୌ',
+ 'ஔ' => 'ஔ',
+ 'ொ' => 'ொ',
+ 'ோ' => 'ோ',
+ 'ௌ' => 'ௌ',
+ 'ై' => 'ై',
+ 'ೀ' => 'ೀ',
+ 'ೇ' => 'ೇ',
+ 'ೈ' => 'ೈ',
+ 'ೊ' => 'ೊ',
+ 'ೋ' => 'ೋ',
+ 'ൊ' => 'ൊ',
+ 'ോ' => 'ോ',
+ 'ൌ' => 'ൌ',
+ 'ේ' => 'ේ',
+ 'ො' => 'ො',
+ 'ෝ' => 'ෝ',
+ 'ෞ' => 'ෞ',
+ 'ဦ' => 'ဦ',
+ 'ᬆ' => 'ᬆ',
+ 'ᬈ' => 'ᬈ',
+ 'ᬊ' => 'ᬊ',
+ 'ᬌ' => 'ᬌ',
+ 'ᬎ' => 'ᬎ',
+ 'ᬒ' => 'ᬒ',
+ 'ᬻ' => 'ᬻ',
+ 'ᬽ' => 'ᬽ',
+ 'ᭀ' => 'ᭀ',
+ 'ᭁ' => 'ᭁ',
+ 'ᭃ' => 'ᭃ',
+ 'Ḁ' => 'Ḁ',
+ 'ḁ' => 'ḁ',
+ 'Ḃ' => 'Ḃ',
+ 'ḃ' => 'ḃ',
+ 'Ḅ' => 'Ḅ',
+ 'ḅ' => 'ḅ',
+ 'Ḇ' => 'Ḇ',
+ 'ḇ' => 'ḇ',
+ 'Ḉ' => 'Ḉ',
+ 'ḉ' => 'ḉ',
+ 'Ḋ' => 'Ḋ',
+ 'ḋ' => 'ḋ',
+ 'Ḍ' => 'Ḍ',
+ 'ḍ' => 'ḍ',
+ 'Ḏ' => 'Ḏ',
+ 'ḏ' => 'ḏ',
+ 'Ḑ' => 'Ḑ',
+ 'ḑ' => 'ḑ',
+ 'Ḓ' => 'Ḓ',
+ 'ḓ' => 'ḓ',
+ 'Ḕ' => 'Ḕ',
+ 'ḕ' => 'ḕ',
+ 'Ḗ' => 'Ḗ',
+ 'ḗ' => 'ḗ',
+ 'Ḙ' => 'Ḙ',
+ 'ḙ' => 'ḙ',
+ 'Ḛ' => 'Ḛ',
+ 'ḛ' => 'ḛ',
+ 'Ḝ' => 'Ḝ',
+ 'ḝ' => 'ḝ',
+ 'Ḟ' => 'Ḟ',
+ 'ḟ' => 'ḟ',
+ 'Ḡ' => 'Ḡ',
+ 'ḡ' => 'ḡ',
+ 'Ḣ' => 'Ḣ',
+ 'ḣ' => 'ḣ',
+ 'Ḥ' => 'Ḥ',
+ 'ḥ' => 'ḥ',
+ 'Ḧ' => 'Ḧ',
+ 'ḧ' => 'ḧ',
+ 'Ḩ' => 'Ḩ',
+ 'ḩ' => 'ḩ',
+ 'Ḫ' => 'Ḫ',
+ 'ḫ' => 'ḫ',
+ 'Ḭ' => 'Ḭ',
+ 'ḭ' => 'ḭ',
+ 'Ḯ' => 'Ḯ',
+ 'ḯ' => 'ḯ',
+ 'Ḱ' => 'Ḱ',
+ 'ḱ' => 'ḱ',
+ 'Ḳ' => 'Ḳ',
+ 'ḳ' => 'ḳ',
+ 'Ḵ' => 'Ḵ',
+ 'ḵ' => 'ḵ',
+ 'Ḷ' => 'Ḷ',
+ 'ḷ' => 'ḷ',
+ 'Ḹ' => 'Ḹ',
+ 'ḹ' => 'ḹ',
+ 'Ḻ' => 'Ḻ',
+ 'ḻ' => 'ḻ',
+ 'Ḽ' => 'Ḽ',
+ 'ḽ' => 'ḽ',
+ 'Ḿ' => 'Ḿ',
+ 'ḿ' => 'ḿ',
+ 'Ṁ' => 'Ṁ',
+ 'ṁ' => 'ṁ',
+ 'Ṃ' => 'Ṃ',
+ 'ṃ' => 'ṃ',
+ 'Ṅ' => 'Ṅ',
+ 'ṅ' => 'ṅ',
+ 'Ṇ' => 'Ṇ',
+ 'ṇ' => 'ṇ',
+ 'Ṉ' => 'Ṉ',
+ 'ṉ' => 'ṉ',
+ 'Ṋ' => 'Ṋ',
+ 'ṋ' => 'ṋ',
+ 'Ṍ' => 'Ṍ',
+ 'ṍ' => 'ṍ',
+ 'Ṏ' => 'Ṏ',
+ 'ṏ' => 'ṏ',
+ 'Ṑ' => 'Ṑ',
+ 'ṑ' => 'ṑ',
+ 'Ṓ' => 'Ṓ',
+ 'ṓ' => 'ṓ',
+ 'Ṕ' => 'Ṕ',
+ 'ṕ' => 'ṕ',
+ 'Ṗ' => 'Ṗ',
+ 'ṗ' => 'ṗ',
+ 'Ṙ' => 'Ṙ',
+ 'ṙ' => 'ṙ',
+ 'Ṛ' => 'Ṛ',
+ 'ṛ' => 'ṛ',
+ 'Ṝ' => 'Ṝ',
+ 'ṝ' => 'ṝ',
+ 'Ṟ' => 'Ṟ',
+ 'ṟ' => 'ṟ',
+ 'Ṡ' => 'Ṡ',
+ 'ṡ' => 'ṡ',
+ 'Ṣ' => 'Ṣ',
+ 'ṣ' => 'ṣ',
+ 'Ṥ' => 'Ṥ',
+ 'ṥ' => 'ṥ',
+ 'Ṧ' => 'Ṧ',
+ 'ṧ' => 'ṧ',
+ 'Ṩ' => 'Ṩ',
+ 'ṩ' => 'ṩ',
+ 'Ṫ' => 'Ṫ',
+ 'ṫ' => 'ṫ',
+ 'Ṭ' => 'Ṭ',
+ 'ṭ' => 'ṭ',
+ 'Ṯ' => 'Ṯ',
+ 'ṯ' => 'ṯ',
+ 'Ṱ' => 'Ṱ',
+ 'ṱ' => 'ṱ',
+ 'Ṳ' => 'Ṳ',
+ 'ṳ' => 'ṳ',
+ 'Ṵ' => 'Ṵ',
+ 'ṵ' => 'ṵ',
+ 'Ṷ' => 'Ṷ',
+ 'ṷ' => 'ṷ',
+ 'Ṹ' => 'Ṹ',
+ 'ṹ' => 'ṹ',
+ 'Ṻ' => 'Ṻ',
+ 'ṻ' => 'ṻ',
+ 'Ṽ' => 'Ṽ',
+ 'ṽ' => 'ṽ',
+ 'Ṿ' => 'Ṿ',
+ 'ṿ' => 'ṿ',
+ 'Ẁ' => 'Ẁ',
+ 'ẁ' => 'ẁ',
+ 'Ẃ' => 'Ẃ',
+ 'ẃ' => 'ẃ',
+ 'Ẅ' => 'Ẅ',
+ 'ẅ' => 'ẅ',
+ 'Ẇ' => 'Ẇ',
+ 'ẇ' => 'ẇ',
+ 'Ẉ' => 'Ẉ',
+ 'ẉ' => 'ẉ',
+ 'Ẋ' => 'Ẋ',
+ 'ẋ' => 'ẋ',
+ 'Ẍ' => 'Ẍ',
+ 'ẍ' => 'ẍ',
+ 'Ẏ' => 'Ẏ',
+ 'ẏ' => 'ẏ',
+ 'Ẑ' => 'Ẑ',
+ 'ẑ' => 'ẑ',
+ 'Ẓ' => 'Ẓ',
+ 'ẓ' => 'ẓ',
+ 'Ẕ' => 'Ẕ',
+ 'ẕ' => 'ẕ',
+ 'ẖ' => 'ẖ',
+ 'ẗ' => 'ẗ',
+ 'ẘ' => 'ẘ',
+ 'ẙ' => 'ẙ',
+ 'ẛ' => 'ẛ',
+ 'Ạ' => 'Ạ',
+ 'ạ' => 'ạ',
+ 'Ả' => 'Ả',
+ 'ả' => 'ả',
+ 'Ấ' => 'Ấ',
+ 'ấ' => 'ấ',
+ 'Ầ' => 'Ầ',
+ 'ầ' => 'ầ',
+ 'Ẩ' => 'Ẩ',
+ 'ẩ' => 'ẩ',
+ 'Ẫ' => 'Ẫ',
+ 'ẫ' => 'ẫ',
+ 'Ậ' => 'Ậ',
+ 'ậ' => 'ậ',
+ 'Ắ' => 'Ắ',
+ 'ắ' => 'ắ',
+ 'Ằ' => 'Ằ',
+ 'ằ' => 'ằ',
+ 'Ẳ' => 'Ẳ',
+ 'ẳ' => 'ẳ',
+ 'Ẵ' => 'Ẵ',
+ 'ẵ' => 'ẵ',
+ 'Ặ' => 'Ặ',
+ 'ặ' => 'ặ',
+ 'Ẹ' => 'Ẹ',
+ 'ẹ' => 'ẹ',
+ 'Ẻ' => 'Ẻ',
+ 'ẻ' => 'ẻ',
+ 'Ẽ' => 'Ẽ',
+ 'ẽ' => 'ẽ',
+ 'Ế' => 'Ế',
+ 'ế' => 'ế',
+ 'Ề' => 'Ề',
+ 'ề' => 'ề',
+ 'Ể' => 'Ể',
+ 'ể' => 'ể',
+ 'Ễ' => 'Ễ',
+ 'ễ' => 'ễ',
+ 'Ệ' => 'Ệ',
+ 'ệ' => 'ệ',
+ 'Ỉ' => 'Ỉ',
+ 'ỉ' => 'ỉ',
+ 'Ị' => 'Ị',
+ 'ị' => 'ị',
+ 'Ọ' => 'Ọ',
+ 'ọ' => 'ọ',
+ 'Ỏ' => 'Ỏ',
+ 'ỏ' => 'ỏ',
+ 'Ố' => 'Ố',
+ 'ố' => 'ố',
+ 'Ồ' => 'Ồ',
+ 'ồ' => 'ồ',
+ 'Ổ' => 'Ổ',
+ 'ổ' => 'ổ',
+ 'Ỗ' => 'Ỗ',
+ 'ỗ' => 'ỗ',
+ 'Ộ' => 'Ộ',
+ 'ộ' => 'ộ',
+ 'Ớ' => 'Ớ',
+ 'ớ' => 'ớ',
+ 'Ờ' => 'Ờ',
+ 'ờ' => 'ờ',
+ 'Ở' => 'Ở',
+ 'ở' => 'ở',
+ 'Ỡ' => 'Ỡ',
+ 'ỡ' => 'ỡ',
+ 'Ợ' => 'Ợ',
+ 'ợ' => 'ợ',
+ 'Ụ' => 'Ụ',
+ 'ụ' => 'ụ',
+ 'Ủ' => 'Ủ',
+ 'ủ' => 'ủ',
+ 'Ứ' => 'Ứ',
+ 'ứ' => 'ứ',
+ 'Ừ' => 'Ừ',
+ 'ừ' => 'ừ',
+ 'Ử' => 'Ử',
+ 'ử' => 'ử',
+ 'Ữ' => 'Ữ',
+ 'ữ' => 'ữ',
+ 'Ự' => 'Ự',
+ 'ự' => 'ự',
+ 'Ỳ' => 'Ỳ',
+ 'ỳ' => 'ỳ',
+ 'Ỵ' => 'Ỵ',
+ 'ỵ' => 'ỵ',
+ 'Ỷ' => 'Ỷ',
+ 'ỷ' => 'ỷ',
+ 'Ỹ' => 'Ỹ',
+ 'ỹ' => 'ỹ',
+ 'ἀ' => 'ἀ',
+ 'ἁ' => 'ἁ',
+ 'ἂ' => 'ἂ',
+ 'ἃ' => 'ἃ',
+ 'ἄ' => 'ἄ',
+ 'ἅ' => 'ἅ',
+ 'ἆ' => 'ἆ',
+ 'ἇ' => 'ἇ',
+ 'Ἀ' => 'Ἀ',
+ 'Ἁ' => 'Ἁ',
+ 'Ἂ' => 'Ἂ',
+ 'Ἃ' => 'Ἃ',
+ 'Ἄ' => 'Ἄ',
+ 'Ἅ' => 'Ἅ',
+ 'Ἆ' => 'Ἆ',
+ 'Ἇ' => 'Ἇ',
+ 'ἐ' => 'ἐ',
+ 'ἑ' => 'ἑ',
+ 'ἒ' => 'ἒ',
+ 'ἓ' => 'ἓ',
+ 'ἔ' => 'ἔ',
+ 'ἕ' => 'ἕ',
+ 'Ἐ' => 'Ἐ',
+ 'Ἑ' => 'Ἑ',
+ 'Ἒ' => 'Ἒ',
+ 'Ἓ' => 'Ἓ',
+ 'Ἔ' => 'Ἔ',
+ 'Ἕ' => 'Ἕ',
+ 'ἠ' => 'ἠ',
+ 'ἡ' => 'ἡ',
+ 'ἢ' => 'ἢ',
+ 'ἣ' => 'ἣ',
+ 'ἤ' => 'ἤ',
+ 'ἥ' => 'ἥ',
+ 'ἦ' => 'ἦ',
+ 'ἧ' => 'ἧ',
+ 'Ἠ' => 'Ἠ',
+ 'Ἡ' => 'Ἡ',
+ 'Ἢ' => 'Ἢ',
+ 'Ἣ' => 'Ἣ',
+ 'Ἤ' => 'Ἤ',
+ 'Ἥ' => 'Ἥ',
+ 'Ἦ' => 'Ἦ',
+ 'Ἧ' => 'Ἧ',
+ 'ἰ' => 'ἰ',
+ 'ἱ' => 'ἱ',
+ 'ἲ' => 'ἲ',
+ 'ἳ' => 'ἳ',
+ 'ἴ' => 'ἴ',
+ 'ἵ' => 'ἵ',
+ 'ἶ' => 'ἶ',
+ 'ἷ' => 'ἷ',
+ 'Ἰ' => 'Ἰ',
+ 'Ἱ' => 'Ἱ',
+ 'Ἲ' => 'Ἲ',
+ 'Ἳ' => 'Ἳ',
+ 'Ἴ' => 'Ἴ',
+ 'Ἵ' => 'Ἵ',
+ 'Ἶ' => 'Ἶ',
+ 'Ἷ' => 'Ἷ',
+ 'ὀ' => 'ὀ',
+ 'ὁ' => 'ὁ',
+ 'ὂ' => 'ὂ',
+ 'ὃ' => 'ὃ',
+ 'ὄ' => 'ὄ',
+ 'ὅ' => 'ὅ',
+ 'Ὀ' => 'Ὀ',
+ 'Ὁ' => 'Ὁ',
+ 'Ὂ' => 'Ὂ',
+ 'Ὃ' => 'Ὃ',
+ 'Ὄ' => 'Ὄ',
+ 'Ὅ' => 'Ὅ',
+ 'ὐ' => 'ὐ',
+ 'ὑ' => 'ὑ',
+ 'ὒ' => 'ὒ',
+ 'ὓ' => 'ὓ',
+ 'ὔ' => 'ὔ',
+ 'ὕ' => 'ὕ',
+ 'ὖ' => 'ὖ',
+ 'ὗ' => 'ὗ',
+ 'Ὑ' => 'Ὑ',
+ 'Ὓ' => 'Ὓ',
+ 'Ὕ' => 'Ὕ',
+ 'Ὗ' => 'Ὗ',
+ 'ὠ' => 'ὠ',
+ 'ὡ' => 'ὡ',
+ 'ὢ' => 'ὢ',
+ 'ὣ' => 'ὣ',
+ 'ὤ' => 'ὤ',
+ 'ὥ' => 'ὥ',
+ 'ὦ' => 'ὦ',
+ 'ὧ' => 'ὧ',
+ 'Ὠ' => 'Ὠ',
+ 'Ὡ' => 'Ὡ',
+ 'Ὢ' => 'Ὢ',
+ 'Ὣ' => 'Ὣ',
+ 'Ὤ' => 'Ὤ',
+ 'Ὥ' => 'Ὥ',
+ 'Ὦ' => 'Ὦ',
+ 'Ὧ' => 'Ὧ',
+ 'ὰ' => 'ὰ',
+ 'ὲ' => 'ὲ',
+ 'ὴ' => 'ὴ',
+ 'ὶ' => 'ὶ',
+ 'ὸ' => 'ὸ',
+ 'ὺ' => 'ὺ',
+ 'ὼ' => 'ὼ',
+ 'ᾀ' => 'ᾀ',
+ 'ᾁ' => 'ᾁ',
+ 'ᾂ' => 'ᾂ',
+ 'ᾃ' => 'ᾃ',
+ 'ᾄ' => 'ᾄ',
+ 'ᾅ' => 'ᾅ',
+ 'ᾆ' => 'ᾆ',
+ 'ᾇ' => 'ᾇ',
+ 'ᾈ' => 'ᾈ',
+ 'ᾉ' => 'ᾉ',
+ 'ᾊ' => 'ᾊ',
+ 'ᾋ' => 'ᾋ',
+ 'ᾌ' => 'ᾌ',
+ 'ᾍ' => 'ᾍ',
+ 'ᾎ' => 'ᾎ',
+ 'ᾏ' => 'ᾏ',
+ 'ᾐ' => 'ᾐ',
+ 'ᾑ' => 'ᾑ',
+ 'ᾒ' => 'ᾒ',
+ 'ᾓ' => 'ᾓ',
+ 'ᾔ' => 'ᾔ',
+ 'ᾕ' => 'ᾕ',
+ 'ᾖ' => 'ᾖ',
+ 'ᾗ' => 'ᾗ',
+ 'ᾘ' => 'ᾘ',
+ 'ᾙ' => 'ᾙ',
+ 'ᾚ' => 'ᾚ',
+ 'ᾛ' => 'ᾛ',
+ 'ᾜ' => 'ᾜ',
+ 'ᾝ' => 'ᾝ',
+ 'ᾞ' => 'ᾞ',
+ 'ᾟ' => 'ᾟ',
+ 'ᾠ' => 'ᾠ',
+ 'ᾡ' => 'ᾡ',
+ 'ᾢ' => 'ᾢ',
+ 'ᾣ' => 'ᾣ',
+ 'ᾤ' => 'ᾤ',
+ 'ᾥ' => 'ᾥ',
+ 'ᾦ' => 'ᾦ',
+ 'ᾧ' => 'ᾧ',
+ 'ᾨ' => 'ᾨ',
+ 'ᾩ' => 'ᾩ',
+ 'ᾪ' => 'ᾪ',
+ 'ᾫ' => 'ᾫ',
+ 'ᾬ' => 'ᾬ',
+ 'ᾭ' => 'ᾭ',
+ 'ᾮ' => 'ᾮ',
+ 'ᾯ' => 'ᾯ',
+ 'ᾰ' => 'ᾰ',
+ 'ᾱ' => 'ᾱ',
+ 'ᾲ' => 'ᾲ',
+ 'ᾳ' => 'ᾳ',
+ 'ᾴ' => 'ᾴ',
+ 'ᾶ' => 'ᾶ',
+ 'ᾷ' => 'ᾷ',
+ 'Ᾰ' => 'Ᾰ',
+ 'Ᾱ' => 'Ᾱ',
+ 'Ὰ' => 'Ὰ',
+ 'ᾼ' => 'ᾼ',
+ '῁' => '῁',
+ 'ῂ' => 'ῂ',
+ 'ῃ' => 'ῃ',
+ 'ῄ' => 'ῄ',
+ 'ῆ' => 'ῆ',
+ 'ῇ' => 'ῇ',
+ 'Ὲ' => 'Ὲ',
+ 'Ὴ' => 'Ὴ',
+ 'ῌ' => 'ῌ',
+ '῍' => '῍',
+ '῎' => '῎',
+ '῏' => '῏',
+ 'ῐ' => 'ῐ',
+ 'ῑ' => 'ῑ',
+ 'ῒ' => 'ῒ',
+ 'ῖ' => 'ῖ',
+ 'ῗ' => 'ῗ',
+ 'Ῐ' => 'Ῐ',
+ 'Ῑ' => 'Ῑ',
+ 'Ὶ' => 'Ὶ',
+ '῝' => '῝',
+ '῞' => '῞',
+ '῟' => '῟',
+ 'ῠ' => 'ῠ',
+ 'ῡ' => 'ῡ',
+ 'ῢ' => 'ῢ',
+ 'ῤ' => 'ῤ',
+ 'ῥ' => 'ῥ',
+ 'ῦ' => 'ῦ',
+ 'ῧ' => 'ῧ',
+ 'Ῠ' => 'Ῠ',
+ 'Ῡ' => 'Ῡ',
+ 'Ὺ' => 'Ὺ',
+ 'Ῥ' => 'Ῥ',
+ '῭' => '῭',
+ 'ῲ' => 'ῲ',
+ 'ῳ' => 'ῳ',
+ 'ῴ' => 'ῴ',
+ 'ῶ' => 'ῶ',
+ 'ῷ' => 'ῷ',
+ 'Ὸ' => 'Ὸ',
+ 'Ὼ' => 'Ὼ',
+ 'ῼ' => 'ῼ',
+ '↚' => '↚',
+ '↛' => '↛',
+ '↮' => '↮',
+ '⇍' => '⇍',
+ '⇎' => '⇎',
+ '⇏' => '⇏',
+ '∄' => '∄',
+ '∉' => '∉',
+ '∌' => '∌',
+ '∤' => '∤',
+ '∦' => '∦',
+ '≁' => '≁',
+ '≄' => '≄',
+ '≇' => '≇',
+ '≉' => '≉',
+ '≠' => '≠',
+ '≢' => '≢',
+ '≭' => '≭',
+ '≮' => '≮',
+ '≯' => '≯',
+ '≰' => '≰',
+ '≱' => '≱',
+ '≴' => '≴',
+ '≵' => '≵',
+ '≸' => '≸',
+ '≹' => '≹',
+ '⊀' => '⊀',
+ '⊁' => '⊁',
+ '⊄' => '⊄',
+ '⊅' => '⊅',
+ '⊈' => '⊈',
+ '⊉' => '⊉',
+ '⊬' => '⊬',
+ '⊭' => '⊭',
+ '⊮' => '⊮',
+ '⊯' => '⊯',
+ '⋠' => '⋠',
+ '⋡' => '⋡',
+ '⋢' => '⋢',
+ '⋣' => '⋣',
+ '⋪' => '⋪',
+ '⋫' => '⋫',
+ '⋬' => '⋬',
+ '⋭' => '⋭',
+ 'が' => 'が',
+ 'ぎ' => 'ぎ',
+ 'ぐ' => 'ぐ',
+ 'げ' => 'げ',
+ 'ご' => 'ご',
+ 'ざ' => 'ざ',
+ 'じ' => 'じ',
+ 'ず' => 'ず',
+ 'ぜ' => 'ぜ',
+ 'ぞ' => 'ぞ',
+ 'だ' => 'だ',
+ 'ぢ' => 'ぢ',
+ 'づ' => 'づ',
+ 'で' => 'で',
+ 'ど' => 'ど',
+ 'ば' => 'ば',
+ 'ぱ' => 'ぱ',
+ 'び' => 'び',
+ 'ぴ' => 'ぴ',
+ 'ぶ' => 'ぶ',
+ 'ぷ' => 'ぷ',
+ 'べ' => 'べ',
+ 'ぺ' => 'ぺ',
+ 'ぼ' => 'ぼ',
+ 'ぽ' => 'ぽ',
+ 'ゔ' => 'ゔ',
+ 'ゞ' => 'ゞ',
+ 'ガ' => 'ガ',
+ 'ギ' => 'ギ',
+ 'グ' => 'グ',
+ 'ゲ' => 'ゲ',
+ 'ゴ' => 'ゴ',
+ 'ザ' => 'ザ',
+ 'ジ' => 'ジ',
+ 'ズ' => 'ズ',
+ 'ゼ' => 'ゼ',
+ 'ゾ' => 'ゾ',
+ 'ダ' => 'ダ',
+ 'ヂ' => 'ヂ',
+ 'ヅ' => 'ヅ',
+ 'デ' => 'デ',
+ 'ド' => 'ド',
+ 'バ' => 'バ',
+ 'パ' => 'パ',
+ 'ビ' => 'ビ',
+ 'ピ' => 'ピ',
+ 'ブ' => 'ブ',
+ 'プ' => 'プ',
+ 'ベ' => 'ベ',
+ 'ペ' => 'ペ',
+ 'ボ' => 'ボ',
+ 'ポ' => 'ポ',
+ 'ヴ' => 'ヴ',
+ 'ヷ' => 'ヷ',
+ 'ヸ' => 'ヸ',
+ 'ヹ' => 'ヹ',
+ 'ヺ' => 'ヺ',
+ 'ヾ' => 'ヾ',
+ '𑂚' => '𑂚',
+ '𑂜' => '𑂜',
+ '𑂫' => '𑂫',
+ '𑄮' => '𑄮',
+ '𑄯' => '𑄯',
+ '𑍋' => '𑍋',
+ '𑍌' => '𑍌',
+ '𑒻' => '𑒻',
+ '𑒼' => '𑒼',
+ '𑒾' => '𑒾',
+ '𑖺' => '𑖺',
+ '𑖻' => '𑖻',
+ '𑤸' => '𑤸',
+);
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
new file mode 100644
index 0000000..5a3e8e0
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
@@ -0,0 +1,2065 @@
+ 'À',
+ 'Á' => 'Á',
+ 'Â' => 'Â',
+ 'Ã' => 'Ã',
+ 'Ä' => 'Ä',
+ 'Å' => 'Å',
+ 'Ç' => 'Ç',
+ 'È' => 'È',
+ 'É' => 'É',
+ 'Ê' => 'Ê',
+ 'Ë' => 'Ë',
+ 'Ì' => 'Ì',
+ 'Í' => 'Í',
+ 'Î' => 'Î',
+ 'Ï' => 'Ï',
+ 'Ñ' => 'Ñ',
+ 'Ò' => 'Ò',
+ 'Ó' => 'Ó',
+ 'Ô' => 'Ô',
+ 'Õ' => 'Õ',
+ 'Ö' => 'Ö',
+ 'Ù' => 'Ù',
+ 'Ú' => 'Ú',
+ 'Û' => 'Û',
+ 'Ü' => 'Ü',
+ 'Ý' => 'Ý',
+ 'à' => 'à',
+ 'á' => 'á',
+ 'â' => 'â',
+ 'ã' => 'ã',
+ 'ä' => 'ä',
+ 'å' => 'å',
+ 'ç' => 'ç',
+ 'è' => 'è',
+ 'é' => 'é',
+ 'ê' => 'ê',
+ 'ë' => 'ë',
+ 'ì' => 'ì',
+ 'í' => 'í',
+ 'î' => 'î',
+ 'ï' => 'ï',
+ 'ñ' => 'ñ',
+ 'ò' => 'ò',
+ 'ó' => 'ó',
+ 'ô' => 'ô',
+ 'õ' => 'õ',
+ 'ö' => 'ö',
+ 'ù' => 'ù',
+ 'ú' => 'ú',
+ 'û' => 'û',
+ 'ü' => 'ü',
+ 'ý' => 'ý',
+ 'ÿ' => 'ÿ',
+ 'Ā' => 'Ā',
+ 'ā' => 'ā',
+ 'Ă' => 'Ă',
+ 'ă' => 'ă',
+ 'Ą' => 'Ą',
+ 'ą' => 'ą',
+ 'Ć' => 'Ć',
+ 'ć' => 'ć',
+ 'Ĉ' => 'Ĉ',
+ 'ĉ' => 'ĉ',
+ 'Ċ' => 'Ċ',
+ 'ċ' => 'ċ',
+ 'Č' => 'Č',
+ 'č' => 'č',
+ 'Ď' => 'Ď',
+ 'ď' => 'ď',
+ 'Ē' => 'Ē',
+ 'ē' => 'ē',
+ 'Ĕ' => 'Ĕ',
+ 'ĕ' => 'ĕ',
+ 'Ė' => 'Ė',
+ 'ė' => 'ė',
+ 'Ę' => 'Ę',
+ 'ę' => 'ę',
+ 'Ě' => 'Ě',
+ 'ě' => 'ě',
+ 'Ĝ' => 'Ĝ',
+ 'ĝ' => 'ĝ',
+ 'Ğ' => 'Ğ',
+ 'ğ' => 'ğ',
+ 'Ġ' => 'Ġ',
+ 'ġ' => 'ġ',
+ 'Ģ' => 'Ģ',
+ 'ģ' => 'ģ',
+ 'Ĥ' => 'Ĥ',
+ 'ĥ' => 'ĥ',
+ 'Ĩ' => 'Ĩ',
+ 'ĩ' => 'ĩ',
+ 'Ī' => 'Ī',
+ 'ī' => 'ī',
+ 'Ĭ' => 'Ĭ',
+ 'ĭ' => 'ĭ',
+ 'Į' => 'Į',
+ 'į' => 'į',
+ 'İ' => 'İ',
+ 'Ĵ' => 'Ĵ',
+ 'ĵ' => 'ĵ',
+ 'Ķ' => 'Ķ',
+ 'ķ' => 'ķ',
+ 'Ĺ' => 'Ĺ',
+ 'ĺ' => 'ĺ',
+ 'Ļ' => 'Ļ',
+ 'ļ' => 'ļ',
+ 'Ľ' => 'Ľ',
+ 'ľ' => 'ľ',
+ 'Ń' => 'Ń',
+ 'ń' => 'ń',
+ 'Ņ' => 'Ņ',
+ 'ņ' => 'ņ',
+ 'Ň' => 'Ň',
+ 'ň' => 'ň',
+ 'Ō' => 'Ō',
+ 'ō' => 'ō',
+ 'Ŏ' => 'Ŏ',
+ 'ŏ' => 'ŏ',
+ 'Ő' => 'Ő',
+ 'ő' => 'ő',
+ 'Ŕ' => 'Ŕ',
+ 'ŕ' => 'ŕ',
+ 'Ŗ' => 'Ŗ',
+ 'ŗ' => 'ŗ',
+ 'Ř' => 'Ř',
+ 'ř' => 'ř',
+ 'Ś' => 'Ś',
+ 'ś' => 'ś',
+ 'Ŝ' => 'Ŝ',
+ 'ŝ' => 'ŝ',
+ 'Ş' => 'Ş',
+ 'ş' => 'ş',
+ 'Š' => 'Š',
+ 'š' => 'š',
+ 'Ţ' => 'Ţ',
+ 'ţ' => 'ţ',
+ 'Ť' => 'Ť',
+ 'ť' => 'ť',
+ 'Ũ' => 'Ũ',
+ 'ũ' => 'ũ',
+ 'Ū' => 'Ū',
+ 'ū' => 'ū',
+ 'Ŭ' => 'Ŭ',
+ 'ŭ' => 'ŭ',
+ 'Ů' => 'Ů',
+ 'ů' => 'ů',
+ 'Ű' => 'Ű',
+ 'ű' => 'ű',
+ 'Ų' => 'Ų',
+ 'ų' => 'ų',
+ 'Ŵ' => 'Ŵ',
+ 'ŵ' => 'ŵ',
+ 'Ŷ' => 'Ŷ',
+ 'ŷ' => 'ŷ',
+ 'Ÿ' => 'Ÿ',
+ 'Ź' => 'Ź',
+ 'ź' => 'ź',
+ 'Ż' => 'Ż',
+ 'ż' => 'ż',
+ 'Ž' => 'Ž',
+ 'ž' => 'ž',
+ 'Ơ' => 'Ơ',
+ 'ơ' => 'ơ',
+ 'Ư' => 'Ư',
+ 'ư' => 'ư',
+ 'Ǎ' => 'Ǎ',
+ 'ǎ' => 'ǎ',
+ 'Ǐ' => 'Ǐ',
+ 'ǐ' => 'ǐ',
+ 'Ǒ' => 'Ǒ',
+ 'ǒ' => 'ǒ',
+ 'Ǔ' => 'Ǔ',
+ 'ǔ' => 'ǔ',
+ 'Ǖ' => 'Ǖ',
+ 'ǖ' => 'ǖ',
+ 'Ǘ' => 'Ǘ',
+ 'ǘ' => 'ǘ',
+ 'Ǚ' => 'Ǚ',
+ 'ǚ' => 'ǚ',
+ 'Ǜ' => 'Ǜ',
+ 'ǜ' => 'ǜ',
+ 'Ǟ' => 'Ǟ',
+ 'ǟ' => 'ǟ',
+ 'Ǡ' => 'Ǡ',
+ 'ǡ' => 'ǡ',
+ 'Ǣ' => 'Ǣ',
+ 'ǣ' => 'ǣ',
+ 'Ǧ' => 'Ǧ',
+ 'ǧ' => 'ǧ',
+ 'Ǩ' => 'Ǩ',
+ 'ǩ' => 'ǩ',
+ 'Ǫ' => 'Ǫ',
+ 'ǫ' => 'ǫ',
+ 'Ǭ' => 'Ǭ',
+ 'ǭ' => 'ǭ',
+ 'Ǯ' => 'Ǯ',
+ 'ǯ' => 'ǯ',
+ 'ǰ' => 'ǰ',
+ 'Ǵ' => 'Ǵ',
+ 'ǵ' => 'ǵ',
+ 'Ǹ' => 'Ǹ',
+ 'ǹ' => 'ǹ',
+ 'Ǻ' => 'Ǻ',
+ 'ǻ' => 'ǻ',
+ 'Ǽ' => 'Ǽ',
+ 'ǽ' => 'ǽ',
+ 'Ǿ' => 'Ǿ',
+ 'ǿ' => 'ǿ',
+ 'Ȁ' => 'Ȁ',
+ 'ȁ' => 'ȁ',
+ 'Ȃ' => 'Ȃ',
+ 'ȃ' => 'ȃ',
+ 'Ȅ' => 'Ȅ',
+ 'ȅ' => 'ȅ',
+ 'Ȇ' => 'Ȇ',
+ 'ȇ' => 'ȇ',
+ 'Ȉ' => 'Ȉ',
+ 'ȉ' => 'ȉ',
+ 'Ȋ' => 'Ȋ',
+ 'ȋ' => 'ȋ',
+ 'Ȍ' => 'Ȍ',
+ 'ȍ' => 'ȍ',
+ 'Ȏ' => 'Ȏ',
+ 'ȏ' => 'ȏ',
+ 'Ȑ' => 'Ȑ',
+ 'ȑ' => 'ȑ',
+ 'Ȓ' => 'Ȓ',
+ 'ȓ' => 'ȓ',
+ 'Ȕ' => 'Ȕ',
+ 'ȕ' => 'ȕ',
+ 'Ȗ' => 'Ȗ',
+ 'ȗ' => 'ȗ',
+ 'Ș' => 'Ș',
+ 'ș' => 'ș',
+ 'Ț' => 'Ț',
+ 'ț' => 'ț',
+ 'Ȟ' => 'Ȟ',
+ 'ȟ' => 'ȟ',
+ 'Ȧ' => 'Ȧ',
+ 'ȧ' => 'ȧ',
+ 'Ȩ' => 'Ȩ',
+ 'ȩ' => 'ȩ',
+ 'Ȫ' => 'Ȫ',
+ 'ȫ' => 'ȫ',
+ 'Ȭ' => 'Ȭ',
+ 'ȭ' => 'ȭ',
+ 'Ȯ' => 'Ȯ',
+ 'ȯ' => 'ȯ',
+ 'Ȱ' => 'Ȱ',
+ 'ȱ' => 'ȱ',
+ 'Ȳ' => 'Ȳ',
+ 'ȳ' => 'ȳ',
+ '̀' => '̀',
+ '́' => '́',
+ '̓' => '̓',
+ '̈́' => '̈́',
+ 'ʹ' => 'ʹ',
+ ';' => ';',
+ '΅' => '΅',
+ 'Ά' => 'Ά',
+ '·' => '·',
+ 'Έ' => 'Έ',
+ 'Ή' => 'Ή',
+ 'Ί' => 'Ί',
+ 'Ό' => 'Ό',
+ 'Ύ' => 'Ύ',
+ 'Ώ' => 'Ώ',
+ 'ΐ' => 'ΐ',
+ 'Ϊ' => 'Ϊ',
+ 'Ϋ' => 'Ϋ',
+ 'ά' => 'ά',
+ 'έ' => 'έ',
+ 'ή' => 'ή',
+ 'ί' => 'ί',
+ 'ΰ' => 'ΰ',
+ 'ϊ' => 'ϊ',
+ 'ϋ' => 'ϋ',
+ 'ό' => 'ό',
+ 'ύ' => 'ύ',
+ 'ώ' => 'ώ',
+ 'ϓ' => 'ϓ',
+ 'ϔ' => 'ϔ',
+ 'Ѐ' => 'Ѐ',
+ 'Ё' => 'Ё',
+ 'Ѓ' => 'Ѓ',
+ 'Ї' => 'Ї',
+ 'Ќ' => 'Ќ',
+ 'Ѝ' => 'Ѝ',
+ 'Ў' => 'Ў',
+ 'Й' => 'Й',
+ 'й' => 'й',
+ 'ѐ' => 'ѐ',
+ 'ё' => 'ё',
+ 'ѓ' => 'ѓ',
+ 'ї' => 'ї',
+ 'ќ' => 'ќ',
+ 'ѝ' => 'ѝ',
+ 'ў' => 'ў',
+ 'Ѷ' => 'Ѷ',
+ 'ѷ' => 'ѷ',
+ 'Ӂ' => 'Ӂ',
+ 'ӂ' => 'ӂ',
+ 'Ӑ' => 'Ӑ',
+ 'ӑ' => 'ӑ',
+ 'Ӓ' => 'Ӓ',
+ 'ӓ' => 'ӓ',
+ 'Ӗ' => 'Ӗ',
+ 'ӗ' => 'ӗ',
+ 'Ӛ' => 'Ӛ',
+ 'ӛ' => 'ӛ',
+ 'Ӝ' => 'Ӝ',
+ 'ӝ' => 'ӝ',
+ 'Ӟ' => 'Ӟ',
+ 'ӟ' => 'ӟ',
+ 'Ӣ' => 'Ӣ',
+ 'ӣ' => 'ӣ',
+ 'Ӥ' => 'Ӥ',
+ 'ӥ' => 'ӥ',
+ 'Ӧ' => 'Ӧ',
+ 'ӧ' => 'ӧ',
+ 'Ӫ' => 'Ӫ',
+ 'ӫ' => 'ӫ',
+ 'Ӭ' => 'Ӭ',
+ 'ӭ' => 'ӭ',
+ 'Ӯ' => 'Ӯ',
+ 'ӯ' => 'ӯ',
+ 'Ӱ' => 'Ӱ',
+ 'ӱ' => 'ӱ',
+ 'Ӳ' => 'Ӳ',
+ 'ӳ' => 'ӳ',
+ 'Ӵ' => 'Ӵ',
+ 'ӵ' => 'ӵ',
+ 'Ӹ' => 'Ӹ',
+ 'ӹ' => 'ӹ',
+ 'آ' => 'آ',
+ 'أ' => 'أ',
+ 'ؤ' => 'ؤ',
+ 'إ' => 'إ',
+ 'ئ' => 'ئ',
+ 'ۀ' => 'ۀ',
+ 'ۂ' => 'ۂ',
+ 'ۓ' => 'ۓ',
+ 'ऩ' => 'ऩ',
+ 'ऱ' => 'ऱ',
+ 'ऴ' => 'ऴ',
+ 'क़' => 'क़',
+ 'ख़' => 'ख़',
+ 'ग़' => 'ग़',
+ 'ज़' => 'ज़',
+ 'ड़' => 'ड़',
+ 'ढ़' => 'ढ़',
+ 'फ़' => 'फ़',
+ 'य़' => 'य़',
+ 'ো' => 'ো',
+ 'ৌ' => 'ৌ',
+ 'ড়' => 'ড়',
+ 'ঢ়' => 'ঢ়',
+ 'য়' => 'য়',
+ 'ਲ਼' => 'ਲ਼',
+ 'ਸ਼' => 'ਸ਼',
+ 'ਖ਼' => 'ਖ਼',
+ 'ਗ਼' => 'ਗ਼',
+ 'ਜ਼' => 'ਜ਼',
+ 'ਫ਼' => 'ਫ਼',
+ 'ୈ' => 'ୈ',
+ 'ୋ' => 'ୋ',
+ 'ୌ' => 'ୌ',
+ 'ଡ଼' => 'ଡ଼',
+ 'ଢ଼' => 'ଢ଼',
+ 'ஔ' => 'ஔ',
+ 'ொ' => 'ொ',
+ 'ோ' => 'ோ',
+ 'ௌ' => 'ௌ',
+ 'ై' => 'ై',
+ 'ೀ' => 'ೀ',
+ 'ೇ' => 'ೇ',
+ 'ೈ' => 'ೈ',
+ 'ೊ' => 'ೊ',
+ 'ೋ' => 'ೋ',
+ 'ൊ' => 'ൊ',
+ 'ോ' => 'ോ',
+ 'ൌ' => 'ൌ',
+ 'ේ' => 'ේ',
+ 'ො' => 'ො',
+ 'ෝ' => 'ෝ',
+ 'ෞ' => 'ෞ',
+ 'གྷ' => 'གྷ',
+ 'ཌྷ' => 'ཌྷ',
+ 'དྷ' => 'དྷ',
+ 'བྷ' => 'བྷ',
+ 'ཛྷ' => 'ཛྷ',
+ 'ཀྵ' => 'ཀྵ',
+ 'ཱི' => 'ཱི',
+ 'ཱུ' => 'ཱུ',
+ 'ྲྀ' => 'ྲྀ',
+ 'ླྀ' => 'ླྀ',
+ 'ཱྀ' => 'ཱྀ',
+ 'ྒྷ' => 'ྒྷ',
+ 'ྜྷ' => 'ྜྷ',
+ 'ྡྷ' => 'ྡྷ',
+ 'ྦྷ' => 'ྦྷ',
+ 'ྫྷ' => 'ྫྷ',
+ 'ྐྵ' => 'ྐྵ',
+ 'ဦ' => 'ဦ',
+ 'ᬆ' => 'ᬆ',
+ 'ᬈ' => 'ᬈ',
+ 'ᬊ' => 'ᬊ',
+ 'ᬌ' => 'ᬌ',
+ 'ᬎ' => 'ᬎ',
+ 'ᬒ' => 'ᬒ',
+ 'ᬻ' => 'ᬻ',
+ 'ᬽ' => 'ᬽ',
+ 'ᭀ' => 'ᭀ',
+ 'ᭁ' => 'ᭁ',
+ 'ᭃ' => 'ᭃ',
+ 'Ḁ' => 'Ḁ',
+ 'ḁ' => 'ḁ',
+ 'Ḃ' => 'Ḃ',
+ 'ḃ' => 'ḃ',
+ 'Ḅ' => 'Ḅ',
+ 'ḅ' => 'ḅ',
+ 'Ḇ' => 'Ḇ',
+ 'ḇ' => 'ḇ',
+ 'Ḉ' => 'Ḉ',
+ 'ḉ' => 'ḉ',
+ 'Ḋ' => 'Ḋ',
+ 'ḋ' => 'ḋ',
+ 'Ḍ' => 'Ḍ',
+ 'ḍ' => 'ḍ',
+ 'Ḏ' => 'Ḏ',
+ 'ḏ' => 'ḏ',
+ 'Ḑ' => 'Ḑ',
+ 'ḑ' => 'ḑ',
+ 'Ḓ' => 'Ḓ',
+ 'ḓ' => 'ḓ',
+ 'Ḕ' => 'Ḕ',
+ 'ḕ' => 'ḕ',
+ 'Ḗ' => 'Ḗ',
+ 'ḗ' => 'ḗ',
+ 'Ḙ' => 'Ḙ',
+ 'ḙ' => 'ḙ',
+ 'Ḛ' => 'Ḛ',
+ 'ḛ' => 'ḛ',
+ 'Ḝ' => 'Ḝ',
+ 'ḝ' => 'ḝ',
+ 'Ḟ' => 'Ḟ',
+ 'ḟ' => 'ḟ',
+ 'Ḡ' => 'Ḡ',
+ 'ḡ' => 'ḡ',
+ 'Ḣ' => 'Ḣ',
+ 'ḣ' => 'ḣ',
+ 'Ḥ' => 'Ḥ',
+ 'ḥ' => 'ḥ',
+ 'Ḧ' => 'Ḧ',
+ 'ḧ' => 'ḧ',
+ 'Ḩ' => 'Ḩ',
+ 'ḩ' => 'ḩ',
+ 'Ḫ' => 'Ḫ',
+ 'ḫ' => 'ḫ',
+ 'Ḭ' => 'Ḭ',
+ 'ḭ' => 'ḭ',
+ 'Ḯ' => 'Ḯ',
+ 'ḯ' => 'ḯ',
+ 'Ḱ' => 'Ḱ',
+ 'ḱ' => 'ḱ',
+ 'Ḳ' => 'Ḳ',
+ 'ḳ' => 'ḳ',
+ 'Ḵ' => 'Ḵ',
+ 'ḵ' => 'ḵ',
+ 'Ḷ' => 'Ḷ',
+ 'ḷ' => 'ḷ',
+ 'Ḹ' => 'Ḹ',
+ 'ḹ' => 'ḹ',
+ 'Ḻ' => 'Ḻ',
+ 'ḻ' => 'ḻ',
+ 'Ḽ' => 'Ḽ',
+ 'ḽ' => 'ḽ',
+ 'Ḿ' => 'Ḿ',
+ 'ḿ' => 'ḿ',
+ 'Ṁ' => 'Ṁ',
+ 'ṁ' => 'ṁ',
+ 'Ṃ' => 'Ṃ',
+ 'ṃ' => 'ṃ',
+ 'Ṅ' => 'Ṅ',
+ 'ṅ' => 'ṅ',
+ 'Ṇ' => 'Ṇ',
+ 'ṇ' => 'ṇ',
+ 'Ṉ' => 'Ṉ',
+ 'ṉ' => 'ṉ',
+ 'Ṋ' => 'Ṋ',
+ 'ṋ' => 'ṋ',
+ 'Ṍ' => 'Ṍ',
+ 'ṍ' => 'ṍ',
+ 'Ṏ' => 'Ṏ',
+ 'ṏ' => 'ṏ',
+ 'Ṑ' => 'Ṑ',
+ 'ṑ' => 'ṑ',
+ 'Ṓ' => 'Ṓ',
+ 'ṓ' => 'ṓ',
+ 'Ṕ' => 'Ṕ',
+ 'ṕ' => 'ṕ',
+ 'Ṗ' => 'Ṗ',
+ 'ṗ' => 'ṗ',
+ 'Ṙ' => 'Ṙ',
+ 'ṙ' => 'ṙ',
+ 'Ṛ' => 'Ṛ',
+ 'ṛ' => 'ṛ',
+ 'Ṝ' => 'Ṝ',
+ 'ṝ' => 'ṝ',
+ 'Ṟ' => 'Ṟ',
+ 'ṟ' => 'ṟ',
+ 'Ṡ' => 'Ṡ',
+ 'ṡ' => 'ṡ',
+ 'Ṣ' => 'Ṣ',
+ 'ṣ' => 'ṣ',
+ 'Ṥ' => 'Ṥ',
+ 'ṥ' => 'ṥ',
+ 'Ṧ' => 'Ṧ',
+ 'ṧ' => 'ṧ',
+ 'Ṩ' => 'Ṩ',
+ 'ṩ' => 'ṩ',
+ 'Ṫ' => 'Ṫ',
+ 'ṫ' => 'ṫ',
+ 'Ṭ' => 'Ṭ',
+ 'ṭ' => 'ṭ',
+ 'Ṯ' => 'Ṯ',
+ 'ṯ' => 'ṯ',
+ 'Ṱ' => 'Ṱ',
+ 'ṱ' => 'ṱ',
+ 'Ṳ' => 'Ṳ',
+ 'ṳ' => 'ṳ',
+ 'Ṵ' => 'Ṵ',
+ 'ṵ' => 'ṵ',
+ 'Ṷ' => 'Ṷ',
+ 'ṷ' => 'ṷ',
+ 'Ṹ' => 'Ṹ',
+ 'ṹ' => 'ṹ',
+ 'Ṻ' => 'Ṻ',
+ 'ṻ' => 'ṻ',
+ 'Ṽ' => 'Ṽ',
+ 'ṽ' => 'ṽ',
+ 'Ṿ' => 'Ṿ',
+ 'ṿ' => 'ṿ',
+ 'Ẁ' => 'Ẁ',
+ 'ẁ' => 'ẁ',
+ 'Ẃ' => 'Ẃ',
+ 'ẃ' => 'ẃ',
+ 'Ẅ' => 'Ẅ',
+ 'ẅ' => 'ẅ',
+ 'Ẇ' => 'Ẇ',
+ 'ẇ' => 'ẇ',
+ 'Ẉ' => 'Ẉ',
+ 'ẉ' => 'ẉ',
+ 'Ẋ' => 'Ẋ',
+ 'ẋ' => 'ẋ',
+ 'Ẍ' => 'Ẍ',
+ 'ẍ' => 'ẍ',
+ 'Ẏ' => 'Ẏ',
+ 'ẏ' => 'ẏ',
+ 'Ẑ' => 'Ẑ',
+ 'ẑ' => 'ẑ',
+ 'Ẓ' => 'Ẓ',
+ 'ẓ' => 'ẓ',
+ 'Ẕ' => 'Ẕ',
+ 'ẕ' => 'ẕ',
+ 'ẖ' => 'ẖ',
+ 'ẗ' => 'ẗ',
+ 'ẘ' => 'ẘ',
+ 'ẙ' => 'ẙ',
+ 'ẛ' => 'ẛ',
+ 'Ạ' => 'Ạ',
+ 'ạ' => 'ạ',
+ 'Ả' => 'Ả',
+ 'ả' => 'ả',
+ 'Ấ' => 'Ấ',
+ 'ấ' => 'ấ',
+ 'Ầ' => 'Ầ',
+ 'ầ' => 'ầ',
+ 'Ẩ' => 'Ẩ',
+ 'ẩ' => 'ẩ',
+ 'Ẫ' => 'Ẫ',
+ 'ẫ' => 'ẫ',
+ 'Ậ' => 'Ậ',
+ 'ậ' => 'ậ',
+ 'Ắ' => 'Ắ',
+ 'ắ' => 'ắ',
+ 'Ằ' => 'Ằ',
+ 'ằ' => 'ằ',
+ 'Ẳ' => 'Ẳ',
+ 'ẳ' => 'ẳ',
+ 'Ẵ' => 'Ẵ',
+ 'ẵ' => 'ẵ',
+ 'Ặ' => 'Ặ',
+ 'ặ' => 'ặ',
+ 'Ẹ' => 'Ẹ',
+ 'ẹ' => 'ẹ',
+ 'Ẻ' => 'Ẻ',
+ 'ẻ' => 'ẻ',
+ 'Ẽ' => 'Ẽ',
+ 'ẽ' => 'ẽ',
+ 'Ế' => 'Ế',
+ 'ế' => 'ế',
+ 'Ề' => 'Ề',
+ 'ề' => 'ề',
+ 'Ể' => 'Ể',
+ 'ể' => 'ể',
+ 'Ễ' => 'Ễ',
+ 'ễ' => 'ễ',
+ 'Ệ' => 'Ệ',
+ 'ệ' => 'ệ',
+ 'Ỉ' => 'Ỉ',
+ 'ỉ' => 'ỉ',
+ 'Ị' => 'Ị',
+ 'ị' => 'ị',
+ 'Ọ' => 'Ọ',
+ 'ọ' => 'ọ',
+ 'Ỏ' => 'Ỏ',
+ 'ỏ' => 'ỏ',
+ 'Ố' => 'Ố',
+ 'ố' => 'ố',
+ 'Ồ' => 'Ồ',
+ 'ồ' => 'ồ',
+ 'Ổ' => 'Ổ',
+ 'ổ' => 'ổ',
+ 'Ỗ' => 'Ỗ',
+ 'ỗ' => 'ỗ',
+ 'Ộ' => 'Ộ',
+ 'ộ' => 'ộ',
+ 'Ớ' => 'Ớ',
+ 'ớ' => 'ớ',
+ 'Ờ' => 'Ờ',
+ 'ờ' => 'ờ',
+ 'Ở' => 'Ở',
+ 'ở' => 'ở',
+ 'Ỡ' => 'Ỡ',
+ 'ỡ' => 'ỡ',
+ 'Ợ' => 'Ợ',
+ 'ợ' => 'ợ',
+ 'Ụ' => 'Ụ',
+ 'ụ' => 'ụ',
+ 'Ủ' => 'Ủ',
+ 'ủ' => 'ủ',
+ 'Ứ' => 'Ứ',
+ 'ứ' => 'ứ',
+ 'Ừ' => 'Ừ',
+ 'ừ' => 'ừ',
+ 'Ử' => 'Ử',
+ 'ử' => 'ử',
+ 'Ữ' => 'Ữ',
+ 'ữ' => 'ữ',
+ 'Ự' => 'Ự',
+ 'ự' => 'ự',
+ 'Ỳ' => 'Ỳ',
+ 'ỳ' => 'ỳ',
+ 'Ỵ' => 'Ỵ',
+ 'ỵ' => 'ỵ',
+ 'Ỷ' => 'Ỷ',
+ 'ỷ' => 'ỷ',
+ 'Ỹ' => 'Ỹ',
+ 'ỹ' => 'ỹ',
+ 'ἀ' => 'ἀ',
+ 'ἁ' => 'ἁ',
+ 'ἂ' => 'ἂ',
+ 'ἃ' => 'ἃ',
+ 'ἄ' => 'ἄ',
+ 'ἅ' => 'ἅ',
+ 'ἆ' => 'ἆ',
+ 'ἇ' => 'ἇ',
+ 'Ἀ' => 'Ἀ',
+ 'Ἁ' => 'Ἁ',
+ 'Ἂ' => 'Ἂ',
+ 'Ἃ' => 'Ἃ',
+ 'Ἄ' => 'Ἄ',
+ 'Ἅ' => 'Ἅ',
+ 'Ἆ' => 'Ἆ',
+ 'Ἇ' => 'Ἇ',
+ 'ἐ' => 'ἐ',
+ 'ἑ' => 'ἑ',
+ 'ἒ' => 'ἒ',
+ 'ἓ' => 'ἓ',
+ 'ἔ' => 'ἔ',
+ 'ἕ' => 'ἕ',
+ 'Ἐ' => 'Ἐ',
+ 'Ἑ' => 'Ἑ',
+ 'Ἒ' => 'Ἒ',
+ 'Ἓ' => 'Ἓ',
+ 'Ἔ' => 'Ἔ',
+ 'Ἕ' => 'Ἕ',
+ 'ἠ' => 'ἠ',
+ 'ἡ' => 'ἡ',
+ 'ἢ' => 'ἢ',
+ 'ἣ' => 'ἣ',
+ 'ἤ' => 'ἤ',
+ 'ἥ' => 'ἥ',
+ 'ἦ' => 'ἦ',
+ 'ἧ' => 'ἧ',
+ 'Ἠ' => 'Ἠ',
+ 'Ἡ' => 'Ἡ',
+ 'Ἢ' => 'Ἢ',
+ 'Ἣ' => 'Ἣ',
+ 'Ἤ' => 'Ἤ',
+ 'Ἥ' => 'Ἥ',
+ 'Ἦ' => 'Ἦ',
+ 'Ἧ' => 'Ἧ',
+ 'ἰ' => 'ἰ',
+ 'ἱ' => 'ἱ',
+ 'ἲ' => 'ἲ',
+ 'ἳ' => 'ἳ',
+ 'ἴ' => 'ἴ',
+ 'ἵ' => 'ἵ',
+ 'ἶ' => 'ἶ',
+ 'ἷ' => 'ἷ',
+ 'Ἰ' => 'Ἰ',
+ 'Ἱ' => 'Ἱ',
+ 'Ἲ' => 'Ἲ',
+ 'Ἳ' => 'Ἳ',
+ 'Ἴ' => 'Ἴ',
+ 'Ἵ' => 'Ἵ',
+ 'Ἶ' => 'Ἶ',
+ 'Ἷ' => 'Ἷ',
+ 'ὀ' => 'ὀ',
+ 'ὁ' => 'ὁ',
+ 'ὂ' => 'ὂ',
+ 'ὃ' => 'ὃ',
+ 'ὄ' => 'ὄ',
+ 'ὅ' => 'ὅ',
+ 'Ὀ' => 'Ὀ',
+ 'Ὁ' => 'Ὁ',
+ 'Ὂ' => 'Ὂ',
+ 'Ὃ' => 'Ὃ',
+ 'Ὄ' => 'Ὄ',
+ 'Ὅ' => 'Ὅ',
+ 'ὐ' => 'ὐ',
+ 'ὑ' => 'ὑ',
+ 'ὒ' => 'ὒ',
+ 'ὓ' => 'ὓ',
+ 'ὔ' => 'ὔ',
+ 'ὕ' => 'ὕ',
+ 'ὖ' => 'ὖ',
+ 'ὗ' => 'ὗ',
+ 'Ὑ' => 'Ὑ',
+ 'Ὓ' => 'Ὓ',
+ 'Ὕ' => 'Ὕ',
+ 'Ὗ' => 'Ὗ',
+ 'ὠ' => 'ὠ',
+ 'ὡ' => 'ὡ',
+ 'ὢ' => 'ὢ',
+ 'ὣ' => 'ὣ',
+ 'ὤ' => 'ὤ',
+ 'ὥ' => 'ὥ',
+ 'ὦ' => 'ὦ',
+ 'ὧ' => 'ὧ',
+ 'Ὠ' => 'Ὠ',
+ 'Ὡ' => 'Ὡ',
+ 'Ὢ' => 'Ὢ',
+ 'Ὣ' => 'Ὣ',
+ 'Ὤ' => 'Ὤ',
+ 'Ὥ' => 'Ὥ',
+ 'Ὦ' => 'Ὦ',
+ 'Ὧ' => 'Ὧ',
+ 'ὰ' => 'ὰ',
+ 'ά' => 'ά',
+ 'ὲ' => 'ὲ',
+ 'έ' => 'έ',
+ 'ὴ' => 'ὴ',
+ 'ή' => 'ή',
+ 'ὶ' => 'ὶ',
+ 'ί' => 'ί',
+ 'ὸ' => 'ὸ',
+ 'ό' => 'ό',
+ 'ὺ' => 'ὺ',
+ 'ύ' => 'ύ',
+ 'ὼ' => 'ὼ',
+ 'ώ' => 'ώ',
+ 'ᾀ' => 'ᾀ',
+ 'ᾁ' => 'ᾁ',
+ 'ᾂ' => 'ᾂ',
+ 'ᾃ' => 'ᾃ',
+ 'ᾄ' => 'ᾄ',
+ 'ᾅ' => 'ᾅ',
+ 'ᾆ' => 'ᾆ',
+ 'ᾇ' => 'ᾇ',
+ 'ᾈ' => 'ᾈ',
+ 'ᾉ' => 'ᾉ',
+ 'ᾊ' => 'ᾊ',
+ 'ᾋ' => 'ᾋ',
+ 'ᾌ' => 'ᾌ',
+ 'ᾍ' => 'ᾍ',
+ 'ᾎ' => 'ᾎ',
+ 'ᾏ' => 'ᾏ',
+ 'ᾐ' => 'ᾐ',
+ 'ᾑ' => 'ᾑ',
+ 'ᾒ' => 'ᾒ',
+ 'ᾓ' => 'ᾓ',
+ 'ᾔ' => 'ᾔ',
+ 'ᾕ' => 'ᾕ',
+ 'ᾖ' => 'ᾖ',
+ 'ᾗ' => 'ᾗ',
+ 'ᾘ' => 'ᾘ',
+ 'ᾙ' => 'ᾙ',
+ 'ᾚ' => 'ᾚ',
+ 'ᾛ' => 'ᾛ',
+ 'ᾜ' => 'ᾜ',
+ 'ᾝ' => 'ᾝ',
+ 'ᾞ' => 'ᾞ',
+ 'ᾟ' => 'ᾟ',
+ 'ᾠ' => 'ᾠ',
+ 'ᾡ' => 'ᾡ',
+ 'ᾢ' => 'ᾢ',
+ 'ᾣ' => 'ᾣ',
+ 'ᾤ' => 'ᾤ',
+ 'ᾥ' => 'ᾥ',
+ 'ᾦ' => 'ᾦ',
+ 'ᾧ' => 'ᾧ',
+ 'ᾨ' => 'ᾨ',
+ 'ᾩ' => 'ᾩ',
+ 'ᾪ' => 'ᾪ',
+ 'ᾫ' => 'ᾫ',
+ 'ᾬ' => 'ᾬ',
+ 'ᾭ' => 'ᾭ',
+ 'ᾮ' => 'ᾮ',
+ 'ᾯ' => 'ᾯ',
+ 'ᾰ' => 'ᾰ',
+ 'ᾱ' => 'ᾱ',
+ 'ᾲ' => 'ᾲ',
+ 'ᾳ' => 'ᾳ',
+ 'ᾴ' => 'ᾴ',
+ 'ᾶ' => 'ᾶ',
+ 'ᾷ' => 'ᾷ',
+ 'Ᾰ' => 'Ᾰ',
+ 'Ᾱ' => 'Ᾱ',
+ 'Ὰ' => 'Ὰ',
+ 'Ά' => 'Ά',
+ 'ᾼ' => 'ᾼ',
+ 'ι' => 'ι',
+ '῁' => '῁',
+ 'ῂ' => 'ῂ',
+ 'ῃ' => 'ῃ',
+ 'ῄ' => 'ῄ',
+ 'ῆ' => 'ῆ',
+ 'ῇ' => 'ῇ',
+ 'Ὲ' => 'Ὲ',
+ 'Έ' => 'Έ',
+ 'Ὴ' => 'Ὴ',
+ 'Ή' => 'Ή',
+ 'ῌ' => 'ῌ',
+ '῍' => '῍',
+ '῎' => '῎',
+ '῏' => '῏',
+ 'ῐ' => 'ῐ',
+ 'ῑ' => 'ῑ',
+ 'ῒ' => 'ῒ',
+ 'ΐ' => 'ΐ',
+ 'ῖ' => 'ῖ',
+ 'ῗ' => 'ῗ',
+ 'Ῐ' => 'Ῐ',
+ 'Ῑ' => 'Ῑ',
+ 'Ὶ' => 'Ὶ',
+ 'Ί' => 'Ί',
+ '῝' => '῝',
+ '῞' => '῞',
+ '῟' => '῟',
+ 'ῠ' => 'ῠ',
+ 'ῡ' => 'ῡ',
+ 'ῢ' => 'ῢ',
+ 'ΰ' => 'ΰ',
+ 'ῤ' => 'ῤ',
+ 'ῥ' => 'ῥ',
+ 'ῦ' => 'ῦ',
+ 'ῧ' => 'ῧ',
+ 'Ῠ' => 'Ῠ',
+ 'Ῡ' => 'Ῡ',
+ 'Ὺ' => 'Ὺ',
+ 'Ύ' => 'Ύ',
+ 'Ῥ' => 'Ῥ',
+ '῭' => '῭',
+ '΅' => '΅',
+ '`' => '`',
+ 'ῲ' => 'ῲ',
+ 'ῳ' => 'ῳ',
+ 'ῴ' => 'ῴ',
+ 'ῶ' => 'ῶ',
+ 'ῷ' => 'ῷ',
+ 'Ὸ' => 'Ὸ',
+ 'Ό' => 'Ό',
+ 'Ὼ' => 'Ὼ',
+ 'Ώ' => 'Ώ',
+ 'ῼ' => 'ῼ',
+ '´' => '´',
+ ' ' => ' ',
+ ' ' => ' ',
+ 'Ω' => 'Ω',
+ 'K' => 'K',
+ 'Å' => 'Å',
+ '↚' => '↚',
+ '↛' => '↛',
+ '↮' => '↮',
+ '⇍' => '⇍',
+ '⇎' => '⇎',
+ '⇏' => '⇏',
+ '∄' => '∄',
+ '∉' => '∉',
+ '∌' => '∌',
+ '∤' => '∤',
+ '∦' => '∦',
+ '≁' => '≁',
+ '≄' => '≄',
+ '≇' => '≇',
+ '≉' => '≉',
+ '≠' => '≠',
+ '≢' => '≢',
+ '≭' => '≭',
+ '≮' => '≮',
+ '≯' => '≯',
+ '≰' => '≰',
+ '≱' => '≱',
+ '≴' => '≴',
+ '≵' => '≵',
+ '≸' => '≸',
+ '≹' => '≹',
+ '⊀' => '⊀',
+ '⊁' => '⊁',
+ '⊄' => '⊄',
+ '⊅' => '⊅',
+ '⊈' => '⊈',
+ '⊉' => '⊉',
+ '⊬' => '⊬',
+ '⊭' => '⊭',
+ '⊮' => '⊮',
+ '⊯' => '⊯',
+ '⋠' => '⋠',
+ '⋡' => '⋡',
+ '⋢' => '⋢',
+ '⋣' => '⋣',
+ '⋪' => '⋪',
+ '⋫' => '⋫',
+ '⋬' => '⋬',
+ '⋭' => '⋭',
+ '〈' => '〈',
+ '〉' => '〉',
+ '⫝̸' => '⫝̸',
+ 'が' => 'が',
+ 'ぎ' => 'ぎ',
+ 'ぐ' => 'ぐ',
+ 'げ' => 'げ',
+ 'ご' => 'ご',
+ 'ざ' => 'ざ',
+ 'じ' => 'じ',
+ 'ず' => 'ず',
+ 'ぜ' => 'ぜ',
+ 'ぞ' => 'ぞ',
+ 'だ' => 'だ',
+ 'ぢ' => 'ぢ',
+ 'づ' => 'づ',
+ 'で' => 'で',
+ 'ど' => 'ど',
+ 'ば' => 'ば',
+ 'ぱ' => 'ぱ',
+ 'び' => 'び',
+ 'ぴ' => 'ぴ',
+ 'ぶ' => 'ぶ',
+ 'ぷ' => 'ぷ',
+ 'べ' => 'べ',
+ 'ぺ' => 'ぺ',
+ 'ぼ' => 'ぼ',
+ 'ぽ' => 'ぽ',
+ 'ゔ' => 'ゔ',
+ 'ゞ' => 'ゞ',
+ 'ガ' => 'ガ',
+ 'ギ' => 'ギ',
+ 'グ' => 'グ',
+ 'ゲ' => 'ゲ',
+ 'ゴ' => 'ゴ',
+ 'ザ' => 'ザ',
+ 'ジ' => 'ジ',
+ 'ズ' => 'ズ',
+ 'ゼ' => 'ゼ',
+ 'ゾ' => 'ゾ',
+ 'ダ' => 'ダ',
+ 'ヂ' => 'ヂ',
+ 'ヅ' => 'ヅ',
+ 'デ' => 'デ',
+ 'ド' => 'ド',
+ 'バ' => 'バ',
+ 'パ' => 'パ',
+ 'ビ' => 'ビ',
+ 'ピ' => 'ピ',
+ 'ブ' => 'ブ',
+ 'プ' => 'プ',
+ 'ベ' => 'ベ',
+ 'ペ' => 'ペ',
+ 'ボ' => 'ボ',
+ 'ポ' => 'ポ',
+ 'ヴ' => 'ヴ',
+ 'ヷ' => 'ヷ',
+ 'ヸ' => 'ヸ',
+ 'ヹ' => 'ヹ',
+ 'ヺ' => 'ヺ',
+ 'ヾ' => 'ヾ',
+ '豈' => '豈',
+ '更' => '更',
+ '車' => '車',
+ '賈' => '賈',
+ '滑' => '滑',
+ '串' => '串',
+ '句' => '句',
+ '龜' => '龜',
+ '龜' => '龜',
+ '契' => '契',
+ '金' => '金',
+ '喇' => '喇',
+ '奈' => '奈',
+ '懶' => '懶',
+ '癩' => '癩',
+ '羅' => '羅',
+ '蘿' => '蘿',
+ '螺' => '螺',
+ '裸' => '裸',
+ '邏' => '邏',
+ '樂' => '樂',
+ '洛' => '洛',
+ '烙' => '烙',
+ '珞' => '珞',
+ '落' => '落',
+ '酪' => '酪',
+ '駱' => '駱',
+ '亂' => '亂',
+ '卵' => '卵',
+ '欄' => '欄',
+ '爛' => '爛',
+ '蘭' => '蘭',
+ '鸞' => '鸞',
+ '嵐' => '嵐',
+ '濫' => '濫',
+ '藍' => '藍',
+ '襤' => '襤',
+ '拉' => '拉',
+ '臘' => '臘',
+ '蠟' => '蠟',
+ '廊' => '廊',
+ '朗' => '朗',
+ '浪' => '浪',
+ '狼' => '狼',
+ '郎' => '郎',
+ '來' => '來',
+ '冷' => '冷',
+ '勞' => '勞',
+ '擄' => '擄',
+ '櫓' => '櫓',
+ '爐' => '爐',
+ '盧' => '盧',
+ '老' => '老',
+ '蘆' => '蘆',
+ '虜' => '虜',
+ '路' => '路',
+ '露' => '露',
+ '魯' => '魯',
+ '鷺' => '鷺',
+ '碌' => '碌',
+ '祿' => '祿',
+ '綠' => '綠',
+ '菉' => '菉',
+ '錄' => '錄',
+ '鹿' => '鹿',
+ '論' => '論',
+ '壟' => '壟',
+ '弄' => '弄',
+ '籠' => '籠',
+ '聾' => '聾',
+ '牢' => '牢',
+ '磊' => '磊',
+ '賂' => '賂',
+ '雷' => '雷',
+ '壘' => '壘',
+ '屢' => '屢',
+ '樓' => '樓',
+ '淚' => '淚',
+ '漏' => '漏',
+ '累' => '累',
+ '縷' => '縷',
+ '陋' => '陋',
+ '勒' => '勒',
+ '肋' => '肋',
+ '凜' => '凜',
+ '凌' => '凌',
+ '稜' => '稜',
+ '綾' => '綾',
+ '菱' => '菱',
+ '陵' => '陵',
+ '讀' => '讀',
+ '拏' => '拏',
+ '樂' => '樂',
+ '諾' => '諾',
+ '丹' => '丹',
+ '寧' => '寧',
+ '怒' => '怒',
+ '率' => '率',
+ '異' => '異',
+ '北' => '北',
+ '磻' => '磻',
+ '便' => '便',
+ '復' => '復',
+ '不' => '不',
+ '泌' => '泌',
+ '數' => '數',
+ '索' => '索',
+ '參' => '參',
+ '塞' => '塞',
+ '省' => '省',
+ '葉' => '葉',
+ '說' => '說',
+ '殺' => '殺',
+ '辰' => '辰',
+ '沈' => '沈',
+ '拾' => '拾',
+ '若' => '若',
+ '掠' => '掠',
+ '略' => '略',
+ '亮' => '亮',
+ '兩' => '兩',
+ '凉' => '凉',
+ '梁' => '梁',
+ '糧' => '糧',
+ '良' => '良',
+ '諒' => '諒',
+ '量' => '量',
+ '勵' => '勵',
+ '呂' => '呂',
+ '女' => '女',
+ '廬' => '廬',
+ '旅' => '旅',
+ '濾' => '濾',
+ '礪' => '礪',
+ '閭' => '閭',
+ '驪' => '驪',
+ '麗' => '麗',
+ '黎' => '黎',
+ '力' => '力',
+ '曆' => '曆',
+ '歷' => '歷',
+ '轢' => '轢',
+ '年' => '年',
+ '憐' => '憐',
+ '戀' => '戀',
+ '撚' => '撚',
+ '漣' => '漣',
+ '煉' => '煉',
+ '璉' => '璉',
+ '秊' => '秊',
+ '練' => '練',
+ '聯' => '聯',
+ '輦' => '輦',
+ '蓮' => '蓮',
+ '連' => '連',
+ '鍊' => '鍊',
+ '列' => '列',
+ '劣' => '劣',
+ '咽' => '咽',
+ '烈' => '烈',
+ '裂' => '裂',
+ '說' => '說',
+ '廉' => '廉',
+ '念' => '念',
+ '捻' => '捻',
+ '殮' => '殮',
+ '簾' => '簾',
+ '獵' => '獵',
+ '令' => '令',
+ '囹' => '囹',
+ '寧' => '寧',
+ '嶺' => '嶺',
+ '怜' => '怜',
+ '玲' => '玲',
+ '瑩' => '瑩',
+ '羚' => '羚',
+ '聆' => '聆',
+ '鈴' => '鈴',
+ '零' => '零',
+ '靈' => '靈',
+ '領' => '領',
+ '例' => '例',
+ '禮' => '禮',
+ '醴' => '醴',
+ '隸' => '隸',
+ '惡' => '惡',
+ '了' => '了',
+ '僚' => '僚',
+ '寮' => '寮',
+ '尿' => '尿',
+ '料' => '料',
+ '樂' => '樂',
+ '燎' => '燎',
+ '療' => '療',
+ '蓼' => '蓼',
+ '遼' => '遼',
+ '龍' => '龍',
+ '暈' => '暈',
+ '阮' => '阮',
+ '劉' => '劉',
+ '杻' => '杻',
+ '柳' => '柳',
+ '流' => '流',
+ '溜' => '溜',
+ '琉' => '琉',
+ '留' => '留',
+ '硫' => '硫',
+ '紐' => '紐',
+ '類' => '類',
+ '六' => '六',
+ '戮' => '戮',
+ '陸' => '陸',
+ '倫' => '倫',
+ '崙' => '崙',
+ '淪' => '淪',
+ '輪' => '輪',
+ '律' => '律',
+ '慄' => '慄',
+ '栗' => '栗',
+ '率' => '率',
+ '隆' => '隆',
+ '利' => '利',
+ '吏' => '吏',
+ '履' => '履',
+ '易' => '易',
+ '李' => '李',
+ '梨' => '梨',
+ '泥' => '泥',
+ '理' => '理',
+ '痢' => '痢',
+ '罹' => '罹',
+ '裏' => '裏',
+ '裡' => '裡',
+ '里' => '里',
+ '離' => '離',
+ '匿' => '匿',
+ '溺' => '溺',
+ '吝' => '吝',
+ '燐' => '燐',
+ '璘' => '璘',
+ '藺' => '藺',
+ '隣' => '隣',
+ '鱗' => '鱗',
+ '麟' => '麟',
+ '林' => '林',
+ '淋' => '淋',
+ '臨' => '臨',
+ '立' => '立',
+ '笠' => '笠',
+ '粒' => '粒',
+ '狀' => '狀',
+ '炙' => '炙',
+ '識' => '識',
+ '什' => '什',
+ '茶' => '茶',
+ '刺' => '刺',
+ '切' => '切',
+ '度' => '度',
+ '拓' => '拓',
+ '糖' => '糖',
+ '宅' => '宅',
+ '洞' => '洞',
+ '暴' => '暴',
+ '輻' => '輻',
+ '行' => '行',
+ '降' => '降',
+ '見' => '見',
+ '廓' => '廓',
+ '兀' => '兀',
+ '嗀' => '嗀',
+ '塚' => '塚',
+ '晴' => '晴',
+ '凞' => '凞',
+ '猪' => '猪',
+ '益' => '益',
+ '礼' => '礼',
+ '神' => '神',
+ '祥' => '祥',
+ '福' => '福',
+ '靖' => '靖',
+ '精' => '精',
+ '羽' => '羽',
+ '蘒' => '蘒',
+ '諸' => '諸',
+ '逸' => '逸',
+ '都' => '都',
+ '飯' => '飯',
+ '飼' => '飼',
+ '館' => '館',
+ '鶴' => '鶴',
+ '郞' => '郞',
+ '隷' => '隷',
+ '侮' => '侮',
+ '僧' => '僧',
+ '免' => '免',
+ '勉' => '勉',
+ '勤' => '勤',
+ '卑' => '卑',
+ '喝' => '喝',
+ '嘆' => '嘆',
+ '器' => '器',
+ '塀' => '塀',
+ '墨' => '墨',
+ '層' => '層',
+ '屮' => '屮',
+ '悔' => '悔',
+ '慨' => '慨',
+ '憎' => '憎',
+ '懲' => '懲',
+ '敏' => '敏',
+ '既' => '既',
+ '暑' => '暑',
+ '梅' => '梅',
+ '海' => '海',
+ '渚' => '渚',
+ '漢' => '漢',
+ '煮' => '煮',
+ '爫' => '爫',
+ '琢' => '琢',
+ '碑' => '碑',
+ '社' => '社',
+ '祉' => '祉',
+ '祈' => '祈',
+ '祐' => '祐',
+ '祖' => '祖',
+ '祝' => '祝',
+ '禍' => '禍',
+ '禎' => '禎',
+ '穀' => '穀',
+ '突' => '突',
+ '節' => '節',
+ '練' => '練',
+ '縉' => '縉',
+ '繁' => '繁',
+ '署' => '署',
+ '者' => '者',
+ '臭' => '臭',
+ '艹' => '艹',
+ '艹' => '艹',
+ '著' => '著',
+ '褐' => '褐',
+ '視' => '視',
+ '謁' => '謁',
+ '謹' => '謹',
+ '賓' => '賓',
+ '贈' => '贈',
+ '辶' => '辶',
+ '逸' => '逸',
+ '難' => '難',
+ '響' => '響',
+ '頻' => '頻',
+ '恵' => '恵',
+ '𤋮' => '𤋮',
+ '舘' => '舘',
+ '並' => '並',
+ '况' => '况',
+ '全' => '全',
+ '侀' => '侀',
+ '充' => '充',
+ '冀' => '冀',
+ '勇' => '勇',
+ '勺' => '勺',
+ '喝' => '喝',
+ '啕' => '啕',
+ '喙' => '喙',
+ '嗢' => '嗢',
+ '塚' => '塚',
+ '墳' => '墳',
+ '奄' => '奄',
+ '奔' => '奔',
+ '婢' => '婢',
+ '嬨' => '嬨',
+ '廒' => '廒',
+ '廙' => '廙',
+ '彩' => '彩',
+ '徭' => '徭',
+ '惘' => '惘',
+ '慎' => '慎',
+ '愈' => '愈',
+ '憎' => '憎',
+ '慠' => '慠',
+ '懲' => '懲',
+ '戴' => '戴',
+ '揄' => '揄',
+ '搜' => '搜',
+ '摒' => '摒',
+ '敖' => '敖',
+ '晴' => '晴',
+ '朗' => '朗',
+ '望' => '望',
+ '杖' => '杖',
+ '歹' => '歹',
+ '殺' => '殺',
+ '流' => '流',
+ '滛' => '滛',
+ '滋' => '滋',
+ '漢' => '漢',
+ '瀞' => '瀞',
+ '煮' => '煮',
+ '瞧' => '瞧',
+ '爵' => '爵',
+ '犯' => '犯',
+ '猪' => '猪',
+ '瑱' => '瑱',
+ '甆' => '甆',
+ '画' => '画',
+ '瘝' => '瘝',
+ '瘟' => '瘟',
+ '益' => '益',
+ '盛' => '盛',
+ '直' => '直',
+ '睊' => '睊',
+ '着' => '着',
+ '磌' => '磌',
+ '窱' => '窱',
+ '節' => '節',
+ '类' => '类',
+ '絛' => '絛',
+ '練' => '練',
+ '缾' => '缾',
+ '者' => '者',
+ '荒' => '荒',
+ '華' => '華',
+ '蝹' => '蝹',
+ '襁' => '襁',
+ '覆' => '覆',
+ '視' => '視',
+ '調' => '調',
+ '諸' => '諸',
+ '請' => '請',
+ '謁' => '謁',
+ '諾' => '諾',
+ '諭' => '諭',
+ '謹' => '謹',
+ '變' => '變',
+ '贈' => '贈',
+ '輸' => '輸',
+ '遲' => '遲',
+ '醙' => '醙',
+ '鉶' => '鉶',
+ '陼' => '陼',
+ '難' => '難',
+ '靖' => '靖',
+ '韛' => '韛',
+ '響' => '響',
+ '頋' => '頋',
+ '頻' => '頻',
+ '鬒' => '鬒',
+ '龜' => '龜',
+ '𢡊' => '𢡊',
+ '𢡄' => '𢡄',
+ '𣏕' => '𣏕',
+ '㮝' => '㮝',
+ '䀘' => '䀘',
+ '䀹' => '䀹',
+ '𥉉' => '𥉉',
+ '𥳐' => '𥳐',
+ '𧻓' => '𧻓',
+ '齃' => '齃',
+ '龎' => '龎',
+ 'יִ' => 'יִ',
+ 'ײַ' => 'ײַ',
+ 'שׁ' => 'שׁ',
+ 'שׂ' => 'שׂ',
+ 'שּׁ' => 'שּׁ',
+ 'שּׂ' => 'שּׂ',
+ 'אַ' => 'אַ',
+ 'אָ' => 'אָ',
+ 'אּ' => 'אּ',
+ 'בּ' => 'בּ',
+ 'גּ' => 'גּ',
+ 'דּ' => 'דּ',
+ 'הּ' => 'הּ',
+ 'וּ' => 'וּ',
+ 'זּ' => 'זּ',
+ 'טּ' => 'טּ',
+ 'יּ' => 'יּ',
+ 'ךּ' => 'ךּ',
+ 'כּ' => 'כּ',
+ 'לּ' => 'לּ',
+ 'מּ' => 'מּ',
+ 'נּ' => 'נּ',
+ 'סּ' => 'סּ',
+ 'ףּ' => 'ףּ',
+ 'פּ' => 'פּ',
+ 'צּ' => 'צּ',
+ 'קּ' => 'קּ',
+ 'רּ' => 'רּ',
+ 'שּ' => 'שּ',
+ 'תּ' => 'תּ',
+ 'וֹ' => 'וֹ',
+ 'בֿ' => 'בֿ',
+ 'כֿ' => 'כֿ',
+ 'פֿ' => 'פֿ',
+ '𑂚' => '𑂚',
+ '𑂜' => '𑂜',
+ '𑂫' => '𑂫',
+ '𑄮' => '𑄮',
+ '𑄯' => '𑄯',
+ '𑍋' => '𑍋',
+ '𑍌' => '𑍌',
+ '𑒻' => '𑒻',
+ '𑒼' => '𑒼',
+ '𑒾' => '𑒾',
+ '𑖺' => '𑖺',
+ '𑖻' => '𑖻',
+ '𑤸' => '𑤸',
+ '𝅗𝅥' => '𝅗𝅥',
+ '𝅘𝅥' => '𝅘𝅥',
+ '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
+ '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
+ '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
+ '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
+ '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
+ '𝆹𝅥' => '𝆹𝅥',
+ '𝆺𝅥' => '𝆺𝅥',
+ '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
+ '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
+ '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
+ '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
+ '丽' => '丽',
+ '丸' => '丸',
+ '乁' => '乁',
+ '𠄢' => '𠄢',
+ '你' => '你',
+ '侮' => '侮',
+ '侻' => '侻',
+ '倂' => '倂',
+ '偺' => '偺',
+ '備' => '備',
+ '僧' => '僧',
+ '像' => '像',
+ '㒞' => '㒞',
+ '𠘺' => '𠘺',
+ '免' => '免',
+ '兔' => '兔',
+ '兤' => '兤',
+ '具' => '具',
+ '𠔜' => '𠔜',
+ '㒹' => '㒹',
+ '內' => '內',
+ '再' => '再',
+ '𠕋' => '𠕋',
+ '冗' => '冗',
+ '冤' => '冤',
+ '仌' => '仌',
+ '冬' => '冬',
+ '况' => '况',
+ '𩇟' => '𩇟',
+ '凵' => '凵',
+ '刃' => '刃',
+ '㓟' => '㓟',
+ '刻' => '刻',
+ '剆' => '剆',
+ '割' => '割',
+ '剷' => '剷',
+ '㔕' => '㔕',
+ '勇' => '勇',
+ '勉' => '勉',
+ '勤' => '勤',
+ '勺' => '勺',
+ '包' => '包',
+ '匆' => '匆',
+ '北' => '北',
+ '卉' => '卉',
+ '卑' => '卑',
+ '博' => '博',
+ '即' => '即',
+ '卽' => '卽',
+ '卿' => '卿',
+ '卿' => '卿',
+ '卿' => '卿',
+ '𠨬' => '𠨬',
+ '灰' => '灰',
+ '及' => '及',
+ '叟' => '叟',
+ '𠭣' => '𠭣',
+ '叫' => '叫',
+ '叱' => '叱',
+ '吆' => '吆',
+ '咞' => '咞',
+ '吸' => '吸',
+ '呈' => '呈',
+ '周' => '周',
+ '咢' => '咢',
+ '哶' => '哶',
+ '唐' => '唐',
+ '啓' => '啓',
+ '啣' => '啣',
+ '善' => '善',
+ '善' => '善',
+ '喙' => '喙',
+ '喫' => '喫',
+ '喳' => '喳',
+ '嗂' => '嗂',
+ '圖' => '圖',
+ '嘆' => '嘆',
+ '圗' => '圗',
+ '噑' => '噑',
+ '噴' => '噴',
+ '切' => '切',
+ '壮' => '壮',
+ '城' => '城',
+ '埴' => '埴',
+ '堍' => '堍',
+ '型' => '型',
+ '堲' => '堲',
+ '報' => '報',
+ '墬' => '墬',
+ '𡓤' => '𡓤',
+ '売' => '売',
+ '壷' => '壷',
+ '夆' => '夆',
+ '多' => '多',
+ '夢' => '夢',
+ '奢' => '奢',
+ '𡚨' => '𡚨',
+ '𡛪' => '𡛪',
+ '姬' => '姬',
+ '娛' => '娛',
+ '娧' => '娧',
+ '姘' => '姘',
+ '婦' => '婦',
+ '㛮' => '㛮',
+ '㛼' => '㛼',
+ '嬈' => '嬈',
+ '嬾' => '嬾',
+ '嬾' => '嬾',
+ '𡧈' => '𡧈',
+ '寃' => '寃',
+ '寘' => '寘',
+ '寧' => '寧',
+ '寳' => '寳',
+ '𡬘' => '𡬘',
+ '寿' => '寿',
+ '将' => '将',
+ '当' => '当',
+ '尢' => '尢',
+ '㞁' => '㞁',
+ '屠' => '屠',
+ '屮' => '屮',
+ '峀' => '峀',
+ '岍' => '岍',
+ '𡷤' => '𡷤',
+ '嵃' => '嵃',
+ '𡷦' => '𡷦',
+ '嵮' => '嵮',
+ '嵫' => '嵫',
+ '嵼' => '嵼',
+ '巡' => '巡',
+ '巢' => '巢',
+ '㠯' => '㠯',
+ '巽' => '巽',
+ '帨' => '帨',
+ '帽' => '帽',
+ '幩' => '幩',
+ '㡢' => '㡢',
+ '𢆃' => '𢆃',
+ '㡼' => '㡼',
+ '庰' => '庰',
+ '庳' => '庳',
+ '庶' => '庶',
+ '廊' => '廊',
+ '𪎒' => '𪎒',
+ '廾' => '廾',
+ '𢌱' => '𢌱',
+ '𢌱' => '𢌱',
+ '舁' => '舁',
+ '弢' => '弢',
+ '弢' => '弢',
+ '㣇' => '㣇',
+ '𣊸' => '𣊸',
+ '𦇚' => '𦇚',
+ '形' => '形',
+ '彫' => '彫',
+ '㣣' => '㣣',
+ '徚' => '徚',
+ '忍' => '忍',
+ '志' => '志',
+ '忹' => '忹',
+ '悁' => '悁',
+ '㤺' => '㤺',
+ '㤜' => '㤜',
+ '悔' => '悔',
+ '𢛔' => '𢛔',
+ '惇' => '惇',
+ '慈' => '慈',
+ '慌' => '慌',
+ '慎' => '慎',
+ '慌' => '慌',
+ '慺' => '慺',
+ '憎' => '憎',
+ '憲' => '憲',
+ '憤' => '憤',
+ '憯' => '憯',
+ '懞' => '懞',
+ '懲' => '懲',
+ '懶' => '懶',
+ '成' => '成',
+ '戛' => '戛',
+ '扝' => '扝',
+ '抱' => '抱',
+ '拔' => '拔',
+ '捐' => '捐',
+ '𢬌' => '𢬌',
+ '挽' => '挽',
+ '拼' => '拼',
+ '捨' => '捨',
+ '掃' => '掃',
+ '揤' => '揤',
+ '𢯱' => '𢯱',
+ '搢' => '搢',
+ '揅' => '揅',
+ '掩' => '掩',
+ '㨮' => '㨮',
+ '摩' => '摩',
+ '摾' => '摾',
+ '撝' => '撝',
+ '摷' => '摷',
+ '㩬' => '㩬',
+ '敏' => '敏',
+ '敬' => '敬',
+ '𣀊' => '𣀊',
+ '旣' => '旣',
+ '書' => '書',
+ '晉' => '晉',
+ '㬙' => '㬙',
+ '暑' => '暑',
+ '㬈' => '㬈',
+ '㫤' => '㫤',
+ '冒' => '冒',
+ '冕' => '冕',
+ '最' => '最',
+ '暜' => '暜',
+ '肭' => '肭',
+ '䏙' => '䏙',
+ '朗' => '朗',
+ '望' => '望',
+ '朡' => '朡',
+ '杞' => '杞',
+ '杓' => '杓',
+ '𣏃' => '𣏃',
+ '㭉' => '㭉',
+ '柺' => '柺',
+ '枅' => '枅',
+ '桒' => '桒',
+ '梅' => '梅',
+ '𣑭' => '𣑭',
+ '梎' => '梎',
+ '栟' => '栟',
+ '椔' => '椔',
+ '㮝' => '㮝',
+ '楂' => '楂',
+ '榣' => '榣',
+ '槪' => '槪',
+ '檨' => '檨',
+ '𣚣' => '𣚣',
+ '櫛' => '櫛',
+ '㰘' => '㰘',
+ '次' => '次',
+ '𣢧' => '𣢧',
+ '歔' => '歔',
+ '㱎' => '㱎',
+ '歲' => '歲',
+ '殟' => '殟',
+ '殺' => '殺',
+ '殻' => '殻',
+ '𣪍' => '𣪍',
+ '𡴋' => '𡴋',
+ '𣫺' => '𣫺',
+ '汎' => '汎',
+ '𣲼' => '𣲼',
+ '沿' => '沿',
+ '泍' => '泍',
+ '汧' => '汧',
+ '洖' => '洖',
+ '派' => '派',
+ '海' => '海',
+ '流' => '流',
+ '浩' => '浩',
+ '浸' => '浸',
+ '涅' => '涅',
+ '𣴞' => '𣴞',
+ '洴' => '洴',
+ '港' => '港',
+ '湮' => '湮',
+ '㴳' => '㴳',
+ '滋' => '滋',
+ '滇' => '滇',
+ '𣻑' => '𣻑',
+ '淹' => '淹',
+ '潮' => '潮',
+ '𣽞' => '𣽞',
+ '𣾎' => '𣾎',
+ '濆' => '濆',
+ '瀹' => '瀹',
+ '瀞' => '瀞',
+ '瀛' => '瀛',
+ '㶖' => '㶖',
+ '灊' => '灊',
+ '災' => '災',
+ '灷' => '灷',
+ '炭' => '炭',
+ '𠔥' => '𠔥',
+ '煅' => '煅',
+ '𤉣' => '𤉣',
+ '熜' => '熜',
+ '𤎫' => '𤎫',
+ '爨' => '爨',
+ '爵' => '爵',
+ '牐' => '牐',
+ '𤘈' => '𤘈',
+ '犀' => '犀',
+ '犕' => '犕',
+ '𤜵' => '𤜵',
+ '𤠔' => '𤠔',
+ '獺' => '獺',
+ '王' => '王',
+ '㺬' => '㺬',
+ '玥' => '玥',
+ '㺸' => '㺸',
+ '㺸' => '㺸',
+ '瑇' => '瑇',
+ '瑜' => '瑜',
+ '瑱' => '瑱',
+ '璅' => '璅',
+ '瓊' => '瓊',
+ '㼛' => '㼛',
+ '甤' => '甤',
+ '𤰶' => '𤰶',
+ '甾' => '甾',
+ '𤲒' => '𤲒',
+ '異' => '異',
+ '𢆟' => '𢆟',
+ '瘐' => '瘐',
+ '𤾡' => '𤾡',
+ '𤾸' => '𤾸',
+ '𥁄' => '𥁄',
+ '㿼' => '㿼',
+ '䀈' => '䀈',
+ '直' => '直',
+ '𥃳' => '𥃳',
+ '𥃲' => '𥃲',
+ '𥄙' => '𥄙',
+ '𥄳' => '𥄳',
+ '眞' => '眞',
+ '真' => '真',
+ '真' => '真',
+ '睊' => '睊',
+ '䀹' => '䀹',
+ '瞋' => '瞋',
+ '䁆' => '䁆',
+ '䂖' => '䂖',
+ '𥐝' => '𥐝',
+ '硎' => '硎',
+ '碌' => '碌',
+ '磌' => '磌',
+ '䃣' => '䃣',
+ '𥘦' => '𥘦',
+ '祖' => '祖',
+ '𥚚' => '𥚚',
+ '𥛅' => '𥛅',
+ '福' => '福',
+ '秫' => '秫',
+ '䄯' => '䄯',
+ '穀' => '穀',
+ '穊' => '穊',
+ '穏' => '穏',
+ '𥥼' => '𥥼',
+ '𥪧' => '𥪧',
+ '𥪧' => '𥪧',
+ '竮' => '竮',
+ '䈂' => '䈂',
+ '𥮫' => '𥮫',
+ '篆' => '篆',
+ '築' => '築',
+ '䈧' => '䈧',
+ '𥲀' => '𥲀',
+ '糒' => '糒',
+ '䊠' => '䊠',
+ '糨' => '糨',
+ '糣' => '糣',
+ '紀' => '紀',
+ '𥾆' => '𥾆',
+ '絣' => '絣',
+ '䌁' => '䌁',
+ '緇' => '緇',
+ '縂' => '縂',
+ '繅' => '繅',
+ '䌴' => '䌴',
+ '𦈨' => '𦈨',
+ '𦉇' => '𦉇',
+ '䍙' => '䍙',
+ '𦋙' => '𦋙',
+ '罺' => '罺',
+ '𦌾' => '𦌾',
+ '羕' => '羕',
+ '翺' => '翺',
+ '者' => '者',
+ '𦓚' => '𦓚',
+ '𦔣' => '𦔣',
+ '聠' => '聠',
+ '𦖨' => '𦖨',
+ '聰' => '聰',
+ '𣍟' => '𣍟',
+ '䏕' => '䏕',
+ '育' => '育',
+ '脃' => '脃',
+ '䐋' => '䐋',
+ '脾' => '脾',
+ '媵' => '媵',
+ '𦞧' => '𦞧',
+ '𦞵' => '𦞵',
+ '𣎓' => '𣎓',
+ '𣎜' => '𣎜',
+ '舁' => '舁',
+ '舄' => '舄',
+ '辞' => '辞',
+ '䑫' => '䑫',
+ '芑' => '芑',
+ '芋' => '芋',
+ '芝' => '芝',
+ '劳' => '劳',
+ '花' => '花',
+ '芳' => '芳',
+ '芽' => '芽',
+ '苦' => '苦',
+ '𦬼' => '𦬼',
+ '若' => '若',
+ '茝' => '茝',
+ '荣' => '荣',
+ '莭' => '莭',
+ '茣' => '茣',
+ '莽' => '莽',
+ '菧' => '菧',
+ '著' => '著',
+ '荓' => '荓',
+ '菊' => '菊',
+ '菌' => '菌',
+ '菜' => '菜',
+ '𦰶' => '𦰶',
+ '𦵫' => '𦵫',
+ '𦳕' => '𦳕',
+ '䔫' => '䔫',
+ '蓱' => '蓱',
+ '蓳' => '蓳',
+ '蔖' => '蔖',
+ '𧏊' => '𧏊',
+ '蕤' => '蕤',
+ '𦼬' => '𦼬',
+ '䕝' => '䕝',
+ '䕡' => '䕡',
+ '𦾱' => '𦾱',
+ '𧃒' => '𧃒',
+ '䕫' => '䕫',
+ '虐' => '虐',
+ '虜' => '虜',
+ '虧' => '虧',
+ '虩' => '虩',
+ '蚩' => '蚩',
+ '蚈' => '蚈',
+ '蜎' => '蜎',
+ '蛢' => '蛢',
+ '蝹' => '蝹',
+ '蜨' => '蜨',
+ '蝫' => '蝫',
+ '螆' => '螆',
+ '䗗' => '䗗',
+ '蟡' => '蟡',
+ '蠁' => '蠁',
+ '䗹' => '䗹',
+ '衠' => '衠',
+ '衣' => '衣',
+ '𧙧' => '𧙧',
+ '裗' => '裗',
+ '裞' => '裞',
+ '䘵' => '䘵',
+ '裺' => '裺',
+ '㒻' => '㒻',
+ '𧢮' => '𧢮',
+ '𧥦' => '𧥦',
+ '䚾' => '䚾',
+ '䛇' => '䛇',
+ '誠' => '誠',
+ '諭' => '諭',
+ '變' => '變',
+ '豕' => '豕',
+ '𧲨' => '𧲨',
+ '貫' => '貫',
+ '賁' => '賁',
+ '贛' => '贛',
+ '起' => '起',
+ '𧼯' => '𧼯',
+ '𠠄' => '𠠄',
+ '跋' => '跋',
+ '趼' => '趼',
+ '跰' => '跰',
+ '𠣞' => '𠣞',
+ '軔' => '軔',
+ '輸' => '輸',
+ '𨗒' => '𨗒',
+ '𨗭' => '𨗭',
+ '邔' => '邔',
+ '郱' => '郱',
+ '鄑' => '鄑',
+ '𨜮' => '𨜮',
+ '鄛' => '鄛',
+ '鈸' => '鈸',
+ '鋗' => '鋗',
+ '鋘' => '鋘',
+ '鉼' => '鉼',
+ '鏹' => '鏹',
+ '鐕' => '鐕',
+ '𨯺' => '𨯺',
+ '開' => '開',
+ '䦕' => '䦕',
+ '閷' => '閷',
+ '𨵷' => '𨵷',
+ '䧦' => '䧦',
+ '雃' => '雃',
+ '嶲' => '嶲',
+ '霣' => '霣',
+ '𩅅' => '𩅅',
+ '𩈚' => '𩈚',
+ '䩮' => '䩮',
+ '䩶' => '䩶',
+ '韠' => '韠',
+ '𩐊' => '𩐊',
+ '䪲' => '䪲',
+ '𩒖' => '𩒖',
+ '頋' => '頋',
+ '頋' => '頋',
+ '頩' => '頩',
+ '𩖶' => '𩖶',
+ '飢' => '飢',
+ '䬳' => '䬳',
+ '餩' => '餩',
+ '馧' => '馧',
+ '駂' => '駂',
+ '駾' => '駾',
+ '䯎' => '䯎',
+ '𩬰' => '𩬰',
+ '鬒' => '鬒',
+ '鱀' => '鱀',
+ '鳽' => '鳽',
+ '䳎' => '䳎',
+ '䳭' => '䳭',
+ '鵧' => '鵧',
+ '𪃎' => '𪃎',
+ '䳸' => '䳸',
+ '𪄅' => '𪄅',
+ '𪈎' => '𪈎',
+ '𪊑' => '𪊑',
+ '麻' => '麻',
+ '䵖' => '䵖',
+ '黹' => '黹',
+ '黾' => '黾',
+ '鼅' => '鼅',
+ '鼏' => '鼏',
+ '鼖' => '鼖',
+ '鼻' => '鼻',
+ '𪘀' => '𪘀',
+);
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
new file mode 100644
index 0000000..ec90f36
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
@@ -0,0 +1,876 @@
+ 230,
+ '́' => 230,
+ '̂' => 230,
+ '̃' => 230,
+ '̄' => 230,
+ '̅' => 230,
+ '̆' => 230,
+ '̇' => 230,
+ '̈' => 230,
+ '̉' => 230,
+ '̊' => 230,
+ '̋' => 230,
+ '̌' => 230,
+ '̍' => 230,
+ '̎' => 230,
+ '̏' => 230,
+ '̐' => 230,
+ '̑' => 230,
+ '̒' => 230,
+ '̓' => 230,
+ '̔' => 230,
+ '̕' => 232,
+ '̖' => 220,
+ '̗' => 220,
+ '̘' => 220,
+ '̙' => 220,
+ '̚' => 232,
+ '̛' => 216,
+ '̜' => 220,
+ '̝' => 220,
+ '̞' => 220,
+ '̟' => 220,
+ '̠' => 220,
+ '̡' => 202,
+ '̢' => 202,
+ '̣' => 220,
+ '̤' => 220,
+ '̥' => 220,
+ '̦' => 220,
+ '̧' => 202,
+ '̨' => 202,
+ '̩' => 220,
+ '̪' => 220,
+ '̫' => 220,
+ '̬' => 220,
+ '̭' => 220,
+ '̮' => 220,
+ '̯' => 220,
+ '̰' => 220,
+ '̱' => 220,
+ '̲' => 220,
+ '̳' => 220,
+ '̴' => 1,
+ '̵' => 1,
+ '̶' => 1,
+ '̷' => 1,
+ '̸' => 1,
+ '̹' => 220,
+ '̺' => 220,
+ '̻' => 220,
+ '̼' => 220,
+ '̽' => 230,
+ '̾' => 230,
+ '̿' => 230,
+ '̀' => 230,
+ '́' => 230,
+ '͂' => 230,
+ '̓' => 230,
+ '̈́' => 230,
+ 'ͅ' => 240,
+ '͆' => 230,
+ '͇' => 220,
+ '͈' => 220,
+ '͉' => 220,
+ '͊' => 230,
+ '͋' => 230,
+ '͌' => 230,
+ '͍' => 220,
+ '͎' => 220,
+ '͐' => 230,
+ '͑' => 230,
+ '͒' => 230,
+ '͓' => 220,
+ '͔' => 220,
+ '͕' => 220,
+ '͖' => 220,
+ '͗' => 230,
+ '͘' => 232,
+ '͙' => 220,
+ '͚' => 220,
+ '͛' => 230,
+ '͜' => 233,
+ '͝' => 234,
+ '͞' => 234,
+ '͟' => 233,
+ '͠' => 234,
+ '͡' => 234,
+ '͢' => 233,
+ 'ͣ' => 230,
+ 'ͤ' => 230,
+ 'ͥ' => 230,
+ 'ͦ' => 230,
+ 'ͧ' => 230,
+ 'ͨ' => 230,
+ 'ͩ' => 230,
+ 'ͪ' => 230,
+ 'ͫ' => 230,
+ 'ͬ' => 230,
+ 'ͭ' => 230,
+ 'ͮ' => 230,
+ 'ͯ' => 230,
+ '҃' => 230,
+ '҄' => 230,
+ '҅' => 230,
+ '҆' => 230,
+ '҇' => 230,
+ '֑' => 220,
+ '֒' => 230,
+ '֓' => 230,
+ '֔' => 230,
+ '֕' => 230,
+ '֖' => 220,
+ '֗' => 230,
+ '֘' => 230,
+ '֙' => 230,
+ '֚' => 222,
+ '֛' => 220,
+ '֜' => 230,
+ '֝' => 230,
+ '֞' => 230,
+ '֟' => 230,
+ '֠' => 230,
+ '֡' => 230,
+ '֢' => 220,
+ '֣' => 220,
+ '֤' => 220,
+ '֥' => 220,
+ '֦' => 220,
+ '֧' => 220,
+ '֨' => 230,
+ '֩' => 230,
+ '֪' => 220,
+ '֫' => 230,
+ '֬' => 230,
+ '֭' => 222,
+ '֮' => 228,
+ '֯' => 230,
+ 'ְ' => 10,
+ 'ֱ' => 11,
+ 'ֲ' => 12,
+ 'ֳ' => 13,
+ 'ִ' => 14,
+ 'ֵ' => 15,
+ 'ֶ' => 16,
+ 'ַ' => 17,
+ 'ָ' => 18,
+ 'ֹ' => 19,
+ 'ֺ' => 19,
+ 'ֻ' => 20,
+ 'ּ' => 21,
+ 'ֽ' => 22,
+ 'ֿ' => 23,
+ 'ׁ' => 24,
+ 'ׂ' => 25,
+ 'ׄ' => 230,
+ 'ׅ' => 220,
+ 'ׇ' => 18,
+ 'ؐ' => 230,
+ 'ؑ' => 230,
+ 'ؒ' => 230,
+ 'ؓ' => 230,
+ 'ؔ' => 230,
+ 'ؕ' => 230,
+ 'ؖ' => 230,
+ 'ؗ' => 230,
+ 'ؘ' => 30,
+ 'ؙ' => 31,
+ 'ؚ' => 32,
+ 'ً' => 27,
+ 'ٌ' => 28,
+ 'ٍ' => 29,
+ 'َ' => 30,
+ 'ُ' => 31,
+ 'ِ' => 32,
+ 'ّ' => 33,
+ 'ْ' => 34,
+ 'ٓ' => 230,
+ 'ٔ' => 230,
+ 'ٕ' => 220,
+ 'ٖ' => 220,
+ 'ٗ' => 230,
+ '٘' => 230,
+ 'ٙ' => 230,
+ 'ٚ' => 230,
+ 'ٛ' => 230,
+ 'ٜ' => 220,
+ 'ٝ' => 230,
+ 'ٞ' => 230,
+ 'ٟ' => 220,
+ 'ٰ' => 35,
+ 'ۖ' => 230,
+ 'ۗ' => 230,
+ 'ۘ' => 230,
+ 'ۙ' => 230,
+ 'ۚ' => 230,
+ 'ۛ' => 230,
+ 'ۜ' => 230,
+ '۟' => 230,
+ '۠' => 230,
+ 'ۡ' => 230,
+ 'ۢ' => 230,
+ 'ۣ' => 220,
+ 'ۤ' => 230,
+ 'ۧ' => 230,
+ 'ۨ' => 230,
+ '۪' => 220,
+ '۫' => 230,
+ '۬' => 230,
+ 'ۭ' => 220,
+ 'ܑ' => 36,
+ 'ܰ' => 230,
+ 'ܱ' => 220,
+ 'ܲ' => 230,
+ 'ܳ' => 230,
+ 'ܴ' => 220,
+ 'ܵ' => 230,
+ 'ܶ' => 230,
+ 'ܷ' => 220,
+ 'ܸ' => 220,
+ 'ܹ' => 220,
+ 'ܺ' => 230,
+ 'ܻ' => 220,
+ 'ܼ' => 220,
+ 'ܽ' => 230,
+ 'ܾ' => 220,
+ 'ܿ' => 230,
+ '݀' => 230,
+ '݁' => 230,
+ '݂' => 220,
+ '݃' => 230,
+ '݄' => 220,
+ '݅' => 230,
+ '݆' => 220,
+ '݇' => 230,
+ '݈' => 220,
+ '݉' => 230,
+ '݊' => 230,
+ '߫' => 230,
+ '߬' => 230,
+ '߭' => 230,
+ '߮' => 230,
+ '߯' => 230,
+ '߰' => 230,
+ '߱' => 230,
+ '߲' => 220,
+ '߳' => 230,
+ '߽' => 220,
+ 'ࠖ' => 230,
+ 'ࠗ' => 230,
+ '࠘' => 230,
+ '࠙' => 230,
+ 'ࠛ' => 230,
+ 'ࠜ' => 230,
+ 'ࠝ' => 230,
+ 'ࠞ' => 230,
+ 'ࠟ' => 230,
+ 'ࠠ' => 230,
+ 'ࠡ' => 230,
+ 'ࠢ' => 230,
+ 'ࠣ' => 230,
+ 'ࠥ' => 230,
+ 'ࠦ' => 230,
+ 'ࠧ' => 230,
+ 'ࠩ' => 230,
+ 'ࠪ' => 230,
+ 'ࠫ' => 230,
+ 'ࠬ' => 230,
+ '࠭' => 230,
+ '࡙' => 220,
+ '࡚' => 220,
+ '࡛' => 220,
+ '࣓' => 220,
+ 'ࣔ' => 230,
+ 'ࣕ' => 230,
+ 'ࣖ' => 230,
+ 'ࣗ' => 230,
+ 'ࣘ' => 230,
+ 'ࣙ' => 230,
+ 'ࣚ' => 230,
+ 'ࣛ' => 230,
+ 'ࣜ' => 230,
+ 'ࣝ' => 230,
+ 'ࣞ' => 230,
+ 'ࣟ' => 230,
+ '࣠' => 230,
+ '࣡' => 230,
+ 'ࣣ' => 220,
+ 'ࣤ' => 230,
+ 'ࣥ' => 230,
+ 'ࣦ' => 220,
+ 'ࣧ' => 230,
+ 'ࣨ' => 230,
+ 'ࣩ' => 220,
+ '࣪' => 230,
+ '࣫' => 230,
+ '࣬' => 230,
+ '࣭' => 220,
+ '࣮' => 220,
+ '࣯' => 220,
+ 'ࣰ' => 27,
+ 'ࣱ' => 28,
+ 'ࣲ' => 29,
+ 'ࣳ' => 230,
+ 'ࣴ' => 230,
+ 'ࣵ' => 230,
+ 'ࣶ' => 220,
+ 'ࣷ' => 230,
+ 'ࣸ' => 230,
+ 'ࣹ' => 220,
+ 'ࣺ' => 220,
+ 'ࣻ' => 230,
+ 'ࣼ' => 230,
+ 'ࣽ' => 230,
+ 'ࣾ' => 230,
+ 'ࣿ' => 230,
+ '़' => 7,
+ '्' => 9,
+ '॑' => 230,
+ '॒' => 220,
+ '॓' => 230,
+ '॔' => 230,
+ '়' => 7,
+ '্' => 9,
+ '৾' => 230,
+ '਼' => 7,
+ '੍' => 9,
+ '઼' => 7,
+ '્' => 9,
+ '଼' => 7,
+ '୍' => 9,
+ '்' => 9,
+ '్' => 9,
+ 'ౕ' => 84,
+ 'ౖ' => 91,
+ '಼' => 7,
+ '್' => 9,
+ '഻' => 9,
+ '഼' => 9,
+ '്' => 9,
+ '්' => 9,
+ 'ุ' => 103,
+ 'ู' => 103,
+ 'ฺ' => 9,
+ '่' => 107,
+ '้' => 107,
+ '๊' => 107,
+ '๋' => 107,
+ 'ຸ' => 118,
+ 'ູ' => 118,
+ '຺' => 9,
+ '່' => 122,
+ '້' => 122,
+ '໊' => 122,
+ '໋' => 122,
+ '༘' => 220,
+ '༙' => 220,
+ '༵' => 220,
+ '༷' => 220,
+ '༹' => 216,
+ 'ཱ' => 129,
+ 'ི' => 130,
+ 'ུ' => 132,
+ 'ེ' => 130,
+ 'ཻ' => 130,
+ 'ོ' => 130,
+ 'ཽ' => 130,
+ 'ྀ' => 130,
+ 'ྂ' => 230,
+ 'ྃ' => 230,
+ '྄' => 9,
+ '྆' => 230,
+ '྇' => 230,
+ '࿆' => 220,
+ '့' => 7,
+ '္' => 9,
+ '်' => 9,
+ 'ႍ' => 220,
+ '፝' => 230,
+ '፞' => 230,
+ '፟' => 230,
+ '᜔' => 9,
+ '᜴' => 9,
+ '្' => 9,
+ '៝' => 230,
+ 'ᢩ' => 228,
+ '᤹' => 222,
+ '᤺' => 230,
+ '᤻' => 220,
+ 'ᨗ' => 230,
+ 'ᨘ' => 220,
+ '᩠' => 9,
+ '᩵' => 230,
+ '᩶' => 230,
+ '᩷' => 230,
+ '᩸' => 230,
+ '᩹' => 230,
+ '᩺' => 230,
+ '᩻' => 230,
+ '᩼' => 230,
+ '᩿' => 220,
+ '᪰' => 230,
+ '᪱' => 230,
+ '᪲' => 230,
+ '᪳' => 230,
+ '᪴' => 230,
+ '᪵' => 220,
+ '᪶' => 220,
+ '᪷' => 220,
+ '᪸' => 220,
+ '᪹' => 220,
+ '᪺' => 220,
+ '᪻' => 230,
+ '᪼' => 230,
+ '᪽' => 220,
+ 'ᪿ' => 220,
+ 'ᫀ' => 220,
+ '᬴' => 7,
+ '᭄' => 9,
+ '᭫' => 230,
+ '᭬' => 220,
+ '᭭' => 230,
+ '᭮' => 230,
+ '᭯' => 230,
+ '᭰' => 230,
+ '᭱' => 230,
+ '᭲' => 230,
+ '᭳' => 230,
+ '᮪' => 9,
+ '᮫' => 9,
+ '᯦' => 7,
+ '᯲' => 9,
+ '᯳' => 9,
+ '᰷' => 7,
+ '᳐' => 230,
+ '᳑' => 230,
+ '᳒' => 230,
+ '᳔' => 1,
+ '᳕' => 220,
+ '᳖' => 220,
+ '᳗' => 220,
+ '᳘' => 220,
+ '᳙' => 220,
+ '᳚' => 230,
+ '᳛' => 230,
+ '᳜' => 220,
+ '᳝' => 220,
+ '᳞' => 220,
+ '᳟' => 220,
+ '᳠' => 230,
+ '᳢' => 1,
+ '᳣' => 1,
+ '᳤' => 1,
+ '᳥' => 1,
+ '᳦' => 1,
+ '᳧' => 1,
+ '᳨' => 1,
+ '᳭' => 220,
+ '᳴' => 230,
+ '᳸' => 230,
+ '᳹' => 230,
+ '᷀' => 230,
+ '᷁' => 230,
+ '᷂' => 220,
+ '᷃' => 230,
+ '᷄' => 230,
+ '᷅' => 230,
+ '᷆' => 230,
+ '᷇' => 230,
+ '᷈' => 230,
+ '᷉' => 230,
+ '᷊' => 220,
+ '᷋' => 230,
+ '᷌' => 230,
+ '᷍' => 234,
+ '᷎' => 214,
+ '᷏' => 220,
+ '᷐' => 202,
+ '᷑' => 230,
+ '᷒' => 230,
+ 'ᷓ' => 230,
+ 'ᷔ' => 230,
+ 'ᷕ' => 230,
+ 'ᷖ' => 230,
+ 'ᷗ' => 230,
+ 'ᷘ' => 230,
+ 'ᷙ' => 230,
+ 'ᷚ' => 230,
+ 'ᷛ' => 230,
+ 'ᷜ' => 230,
+ 'ᷝ' => 230,
+ 'ᷞ' => 230,
+ 'ᷟ' => 230,
+ 'ᷠ' => 230,
+ 'ᷡ' => 230,
+ 'ᷢ' => 230,
+ 'ᷣ' => 230,
+ 'ᷤ' => 230,
+ 'ᷥ' => 230,
+ 'ᷦ' => 230,
+ 'ᷧ' => 230,
+ 'ᷨ' => 230,
+ 'ᷩ' => 230,
+ 'ᷪ' => 230,
+ 'ᷫ' => 230,
+ 'ᷬ' => 230,
+ 'ᷭ' => 230,
+ 'ᷮ' => 230,
+ 'ᷯ' => 230,
+ 'ᷰ' => 230,
+ 'ᷱ' => 230,
+ 'ᷲ' => 230,
+ 'ᷳ' => 230,
+ 'ᷴ' => 230,
+ '᷵' => 230,
+ '᷶' => 232,
+ '᷷' => 228,
+ '᷸' => 228,
+ '᷹' => 220,
+ '᷻' => 230,
+ '᷼' => 233,
+ '᷽' => 220,
+ '᷾' => 230,
+ '᷿' => 220,
+ '⃐' => 230,
+ '⃑' => 230,
+ '⃒' => 1,
+ '⃓' => 1,
+ '⃔' => 230,
+ '⃕' => 230,
+ '⃖' => 230,
+ '⃗' => 230,
+ '⃘' => 1,
+ '⃙' => 1,
+ '⃚' => 1,
+ '⃛' => 230,
+ '⃜' => 230,
+ '⃡' => 230,
+ '⃥' => 1,
+ '⃦' => 1,
+ '⃧' => 230,
+ '⃨' => 220,
+ '⃩' => 230,
+ '⃪' => 1,
+ '⃫' => 1,
+ '⃬' => 220,
+ '⃭' => 220,
+ '⃮' => 220,
+ '⃯' => 220,
+ '⃰' => 230,
+ '⳯' => 230,
+ '⳰' => 230,
+ '⳱' => 230,
+ '⵿' => 9,
+ 'ⷠ' => 230,
+ 'ⷡ' => 230,
+ 'ⷢ' => 230,
+ 'ⷣ' => 230,
+ 'ⷤ' => 230,
+ 'ⷥ' => 230,
+ 'ⷦ' => 230,
+ 'ⷧ' => 230,
+ 'ⷨ' => 230,
+ 'ⷩ' => 230,
+ 'ⷪ' => 230,
+ 'ⷫ' => 230,
+ 'ⷬ' => 230,
+ 'ⷭ' => 230,
+ 'ⷮ' => 230,
+ 'ⷯ' => 230,
+ 'ⷰ' => 230,
+ 'ⷱ' => 230,
+ 'ⷲ' => 230,
+ 'ⷳ' => 230,
+ 'ⷴ' => 230,
+ 'ⷵ' => 230,
+ 'ⷶ' => 230,
+ 'ⷷ' => 230,
+ 'ⷸ' => 230,
+ 'ⷹ' => 230,
+ 'ⷺ' => 230,
+ 'ⷻ' => 230,
+ 'ⷼ' => 230,
+ 'ⷽ' => 230,
+ 'ⷾ' => 230,
+ 'ⷿ' => 230,
+ '〪' => 218,
+ '〫' => 228,
+ '〬' => 232,
+ '〭' => 222,
+ '〮' => 224,
+ '〯' => 224,
+ '゙' => 8,
+ '゚' => 8,
+ '꙯' => 230,
+ 'ꙴ' => 230,
+ 'ꙵ' => 230,
+ 'ꙶ' => 230,
+ 'ꙷ' => 230,
+ 'ꙸ' => 230,
+ 'ꙹ' => 230,
+ 'ꙺ' => 230,
+ 'ꙻ' => 230,
+ '꙼' => 230,
+ '꙽' => 230,
+ 'ꚞ' => 230,
+ 'ꚟ' => 230,
+ '꛰' => 230,
+ '꛱' => 230,
+ '꠆' => 9,
+ '꠬' => 9,
+ '꣄' => 9,
+ '꣠' => 230,
+ '꣡' => 230,
+ '꣢' => 230,
+ '꣣' => 230,
+ '꣤' => 230,
+ '꣥' => 230,
+ '꣦' => 230,
+ '꣧' => 230,
+ '꣨' => 230,
+ '꣩' => 230,
+ '꣪' => 230,
+ '꣫' => 230,
+ '꣬' => 230,
+ '꣭' => 230,
+ '꣮' => 230,
+ '꣯' => 230,
+ '꣰' => 230,
+ '꣱' => 230,
+ '꤫' => 220,
+ '꤬' => 220,
+ '꤭' => 220,
+ '꥓' => 9,
+ '꦳' => 7,
+ '꧀' => 9,
+ 'ꪰ' => 230,
+ 'ꪲ' => 230,
+ 'ꪳ' => 230,
+ 'ꪴ' => 220,
+ 'ꪷ' => 230,
+ 'ꪸ' => 230,
+ 'ꪾ' => 230,
+ '꪿' => 230,
+ '꫁' => 230,
+ '꫶' => 9,
+ '꯭' => 9,
+ 'ﬞ' => 26,
+ '︠' => 230,
+ '︡' => 230,
+ '︢' => 230,
+ '︣' => 230,
+ '︤' => 230,
+ '︥' => 230,
+ '︦' => 230,
+ '︧' => 220,
+ '︨' => 220,
+ '︩' => 220,
+ '︪' => 220,
+ '︫' => 220,
+ '︬' => 220,
+ '︭' => 220,
+ '︮' => 230,
+ '︯' => 230,
+ '𐇽' => 220,
+ '𐋠' => 220,
+ '𐍶' => 230,
+ '𐍷' => 230,
+ '𐍸' => 230,
+ '𐍹' => 230,
+ '𐍺' => 230,
+ '𐨍' => 220,
+ '𐨏' => 230,
+ '𐨸' => 230,
+ '𐨹' => 1,
+ '𐨺' => 220,
+ '𐨿' => 9,
+ '𐫥' => 230,
+ '𐫦' => 220,
+ '𐴤' => 230,
+ '𐴥' => 230,
+ '𐴦' => 230,
+ '𐴧' => 230,
+ '𐺫' => 230,
+ '𐺬' => 230,
+ '𐽆' => 220,
+ '𐽇' => 220,
+ '𐽈' => 230,
+ '𐽉' => 230,
+ '𐽊' => 230,
+ '𐽋' => 220,
+ '𐽌' => 230,
+ '𐽍' => 220,
+ '𐽎' => 220,
+ '𐽏' => 220,
+ '𐽐' => 220,
+ '𑁆' => 9,
+ '𑁿' => 9,
+ '𑂹' => 9,
+ '𑂺' => 7,
+ '𑄀' => 230,
+ '𑄁' => 230,
+ '𑄂' => 230,
+ '𑄳' => 9,
+ '𑄴' => 9,
+ '𑅳' => 7,
+ '𑇀' => 9,
+ '𑇊' => 7,
+ '𑈵' => 9,
+ '𑈶' => 7,
+ '𑋩' => 7,
+ '𑋪' => 9,
+ '𑌻' => 7,
+ '𑌼' => 7,
+ '𑍍' => 9,
+ '𑍦' => 230,
+ '𑍧' => 230,
+ '𑍨' => 230,
+ '𑍩' => 230,
+ '𑍪' => 230,
+ '𑍫' => 230,
+ '𑍬' => 230,
+ '𑍰' => 230,
+ '𑍱' => 230,
+ '𑍲' => 230,
+ '𑍳' => 230,
+ '𑍴' => 230,
+ '𑑂' => 9,
+ '𑑆' => 7,
+ '𑑞' => 230,
+ '𑓂' => 9,
+ '𑓃' => 7,
+ '𑖿' => 9,
+ '𑗀' => 7,
+ '𑘿' => 9,
+ '𑚶' => 9,
+ '𑚷' => 7,
+ '𑜫' => 9,
+ '𑠹' => 9,
+ '𑠺' => 7,
+ '𑤽' => 9,
+ '𑤾' => 9,
+ '𑥃' => 7,
+ '𑧠' => 9,
+ '𑨴' => 9,
+ '𑩇' => 9,
+ '𑪙' => 9,
+ '𑰿' => 9,
+ '𑵂' => 7,
+ '𑵄' => 9,
+ '𑵅' => 9,
+ '𑶗' => 9,
+ '𖫰' => 1,
+ '𖫱' => 1,
+ '𖫲' => 1,
+ '𖫳' => 1,
+ '𖫴' => 1,
+ '𖬰' => 230,
+ '𖬱' => 230,
+ '𖬲' => 230,
+ '𖬳' => 230,
+ '𖬴' => 230,
+ '𖬵' => 230,
+ '𖬶' => 230,
+ '𖿰' => 6,
+ '𖿱' => 6,
+ '𛲞' => 1,
+ '𝅥' => 216,
+ '𝅦' => 216,
+ '𝅧' => 1,
+ '𝅨' => 1,
+ '𝅩' => 1,
+ '𝅭' => 226,
+ '𝅮' => 216,
+ '𝅯' => 216,
+ '𝅰' => 216,
+ '𝅱' => 216,
+ '𝅲' => 216,
+ '𝅻' => 220,
+ '𝅼' => 220,
+ '𝅽' => 220,
+ '𝅾' => 220,
+ '𝅿' => 220,
+ '𝆀' => 220,
+ '𝆁' => 220,
+ '𝆂' => 220,
+ '𝆅' => 230,
+ '𝆆' => 230,
+ '𝆇' => 230,
+ '𝆈' => 230,
+ '𝆉' => 230,
+ '𝆊' => 220,
+ '𝆋' => 220,
+ '𝆪' => 230,
+ '𝆫' => 230,
+ '𝆬' => 230,
+ '𝆭' => 230,
+ '𝉂' => 230,
+ '𝉃' => 230,
+ '𝉄' => 230,
+ '𞀀' => 230,
+ '𞀁' => 230,
+ '𞀂' => 230,
+ '𞀃' => 230,
+ '𞀄' => 230,
+ '𞀅' => 230,
+ '𞀆' => 230,
+ '𞀈' => 230,
+ '𞀉' => 230,
+ '𞀊' => 230,
+ '𞀋' => 230,
+ '𞀌' => 230,
+ '𞀍' => 230,
+ '𞀎' => 230,
+ '𞀏' => 230,
+ '𞀐' => 230,
+ '𞀑' => 230,
+ '𞀒' => 230,
+ '𞀓' => 230,
+ '𞀔' => 230,
+ '𞀕' => 230,
+ '𞀖' => 230,
+ '𞀗' => 230,
+ '𞀘' => 230,
+ '𞀛' => 230,
+ '𞀜' => 230,
+ '𞀝' => 230,
+ '𞀞' => 230,
+ '𞀟' => 230,
+ '𞀠' => 230,
+ '𞀡' => 230,
+ '𞀣' => 230,
+ '𞀤' => 230,
+ '𞀦' => 230,
+ '𞀧' => 230,
+ '𞀨' => 230,
+ '𞀩' => 230,
+ '𞀪' => 230,
+ '𞄰' => 230,
+ '𞄱' => 230,
+ '𞄲' => 230,
+ '𞄳' => 230,
+ '𞄴' => 230,
+ '𞄵' => 230,
+ '𞄶' => 230,
+ '𞋬' => 230,
+ '𞋭' => 230,
+ '𞋮' => 230,
+ '𞋯' => 230,
+ '𞣐' => 220,
+ '𞣑' => 220,
+ '𞣒' => 220,
+ '𞣓' => 220,
+ '𞣔' => 220,
+ '𞣕' => 220,
+ '𞣖' => 220,
+ '𞥄' => 230,
+ '𞥅' => 230,
+ '𞥆' => 230,
+ '𞥇' => 230,
+ '𞥈' => 230,
+ '𞥉' => 230,
+ '𞥊' => 7,
+);
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
new file mode 100644
index 0000000..1574902
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
@@ -0,0 +1,3695 @@
+ ' ',
+ '¨' => ' ̈',
+ 'ª' => 'a',
+ '¯' => ' ̄',
+ '²' => '2',
+ '³' => '3',
+ '´' => ' ́',
+ 'µ' => 'μ',
+ '¸' => ' ̧',
+ '¹' => '1',
+ 'º' => 'o',
+ '¼' => '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',
+ 'ʰ' => 'h',
+ 'ʱ' => 'ɦ',
+ 'ʲ' => 'j',
+ 'ʳ' => 'r',
+ 'ʴ' => 'ɹ',
+ 'ʵ' => 'ɻ',
+ 'ʶ' => 'ʁ',
+ 'ʷ' => 'w',
+ 'ʸ' => 'y',
+ '˘' => ' ̆',
+ '˙' => ' ̇',
+ '˚' => ' ̊',
+ '˛' => ' ̨',
+ '˜' => ' ̃',
+ '˝' => ' ̋',
+ 'ˠ' => 'ɣ',
+ 'ˡ' => 'l',
+ 'ˢ' => 's',
+ 'ˣ' => 'x',
+ 'ˤ' => 'ʕ',
+ 'ͺ' => ' ͅ',
+ '΄' => ' ́',
+ '΅' => ' ̈́',
+ 'ϐ' => 'β',
+ 'ϑ' => 'θ',
+ 'ϒ' => 'Υ',
+ 'ϓ' => 'Ύ',
+ 'ϔ' => 'Ϋ',
+ 'ϕ' => 'φ',
+ 'ϖ' => 'π',
+ 'ϰ' => 'κ',
+ 'ϱ' => 'ρ',
+ 'ϲ' => 'ς',
+ 'ϴ' => 'Θ',
+ 'ϵ' => 'ε',
+ 'Ϲ' => 'Σ',
+ 'և' => 'եւ',
+ 'ٵ' => 'اٴ',
+ 'ٶ' => 'وٴ',
+ 'ٷ' => 'ۇٴ',
+ 'ٸ' => 'يٴ',
+ 'ำ' => 'ํา',
+ 'ຳ' => 'ໍາ',
+ 'ໜ' => 'ຫນ',
+ 'ໝ' => 'ຫມ',
+ '༌' => '་',
+ 'ཷ' => 'ྲཱྀ',
+ 'ཹ' => 'ླཱྀ',
+ 'ჼ' => 'ნ',
+ 'ᴬ' => 'A',
+ 'ᴭ' => 'Æ',
+ 'ᴮ' => 'B',
+ 'ᴰ' => 'D',
+ 'ᴱ' => 'E',
+ 'ᴲ' => 'Ǝ',
+ 'ᴳ' => 'G',
+ 'ᴴ' => 'H',
+ 'ᴵ' => 'I',
+ 'ᴶ' => 'J',
+ 'ᴷ' => 'K',
+ 'ᴸ' => 'L',
+ 'ᴹ' => 'M',
+ 'ᴺ' => 'N',
+ 'ᴼ' => 'O',
+ 'ᴽ' => 'Ȣ',
+ 'ᴾ' => 'P',
+ 'ᴿ' => 'R',
+ 'ᵀ' => 'T',
+ 'ᵁ' => 'U',
+ 'ᵂ' => 'W',
+ 'ᵃ' => 'a',
+ 'ᵄ' => 'ɐ',
+ 'ᵅ' => 'ɑ',
+ 'ᵆ' => 'ᴂ',
+ 'ᵇ' => 'b',
+ 'ᵈ' => 'd',
+ 'ᵉ' => 'e',
+ 'ᵊ' => 'ə',
+ 'ᵋ' => 'ɛ',
+ 'ᵌ' => 'ɜ',
+ 'ᵍ' => 'g',
+ 'ᵏ' => 'k',
+ 'ᵐ' => 'm',
+ 'ᵑ' => 'ŋ',
+ 'ᵒ' => 'o',
+ 'ᵓ' => 'ɔ',
+ 'ᵔ' => 'ᴖ',
+ 'ᵕ' => 'ᴗ',
+ 'ᵖ' => 'p',
+ 'ᵗ' => 't',
+ 'ᵘ' => 'u',
+ 'ᵙ' => 'ᴝ',
+ 'ᵚ' => 'ɯ',
+ 'ᵛ' => 'v',
+ 'ᵜ' => 'ᴥ',
+ 'ᵝ' => 'β',
+ 'ᵞ' => 'γ',
+ 'ᵟ' => 'δ',
+ 'ᵠ' => 'φ',
+ 'ᵡ' => 'χ',
+ 'ᵢ' => 'i',
+ 'ᵣ' => 'r',
+ 'ᵤ' => 'u',
+ 'ᵥ' => 'v',
+ 'ᵦ' => 'β',
+ 'ᵧ' => 'γ',
+ 'ᵨ' => 'ρ',
+ 'ᵩ' => 'φ',
+ 'ᵪ' => 'χ',
+ 'ᵸ' => 'н',
+ 'ᶛ' => 'ɒ',
+ 'ᶜ' => 'c',
+ 'ᶝ' => 'ɕ',
+ 'ᶞ' => 'ð',
+ 'ᶟ' => 'ɜ',
+ 'ᶠ' => 'f',
+ 'ᶡ' => 'ɟ',
+ 'ᶢ' => 'ɡ',
+ 'ᶣ' => 'ɥ',
+ 'ᶤ' => 'ɨ',
+ 'ᶥ' => 'ɩ',
+ 'ᶦ' => 'ɪ',
+ 'ᶧ' => 'ᵻ',
+ 'ᶨ' => 'ʝ',
+ 'ᶩ' => 'ɭ',
+ 'ᶪ' => 'ᶅ',
+ 'ᶫ' => 'ʟ',
+ 'ᶬ' => 'ɱ',
+ 'ᶭ' => 'ɰ',
+ 'ᶮ' => 'ɲ',
+ 'ᶯ' => 'ɳ',
+ 'ᶰ' => 'ɴ',
+ 'ᶱ' => 'ɵ',
+ 'ᶲ' => 'ɸ',
+ 'ᶳ' => 'ʂ',
+ 'ᶴ' => 'ʃ',
+ 'ᶵ' => 'ƫ',
+ 'ᶶ' => 'ʉ',
+ 'ᶷ' => 'ʊ',
+ 'ᶸ' => 'ᴜ',
+ 'ᶹ' => 'ʋ',
+ 'ᶺ' => 'ʌ',
+ 'ᶻ' => 'z',
+ 'ᶼ' => 'ʐ',
+ 'ᶽ' => 'ʑ',
+ 'ᶾ' => 'ʒ',
+ 'ᶿ' => 'θ',
+ 'ẚ' => 'aʾ',
+ 'ẛ' => 'ṡ',
+ '᾽' => ' ̓',
+ '᾿' => ' ̓',
+ '῀' => ' ͂',
+ '῁' => ' ̈͂',
+ '῍' => ' ̓̀',
+ '῎' => ' ̓́',
+ '῏' => ' ̓͂',
+ '῝' => ' ̔̀',
+ '῞' => ' ̔́',
+ '῟' => ' ̔͂',
+ '῭' => ' ̈̀',
+ '΅' => ' ̈́',
+ '´' => ' ́',
+ '῾' => ' ̔',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ ' ' => ' ',
+ '‑' => '‐',
+ '‗' => ' ̳',
+ '․' => '.',
+ '‥' => '..',
+ '…' => '...',
+ ' ' => ' ',
+ '″' => '′′',
+ '‴' => '′′′',
+ '‶' => '‵‵',
+ '‷' => '‵‵‵',
+ '‼' => '!!',
+ '‾' => ' ̅',
+ '⁇' => '??',
+ '⁈' => '?!',
+ '⁉' => '!?',
+ '⁗' => '′′′′',
+ ' ' => ' ',
+ '⁰' => '0',
+ 'ⁱ' => 'i',
+ '⁴' => '4',
+ '⁵' => '5',
+ '⁶' => '6',
+ '⁷' => '7',
+ '⁸' => '8',
+ '⁹' => '9',
+ '⁺' => '+',
+ '⁻' => '−',
+ '⁼' => '=',
+ '⁽' => '(',
+ '⁾' => ')',
+ 'ⁿ' => 'n',
+ '₀' => '0',
+ '₁' => '1',
+ '₂' => '2',
+ '₃' => '3',
+ '₄' => '4',
+ '₅' => '5',
+ '₆' => '6',
+ '₇' => '7',
+ '₈' => '8',
+ '₉' => '9',
+ '₊' => '+',
+ '₋' => '−',
+ '₌' => '=',
+ '₍' => '(',
+ '₎' => ')',
+ 'ₐ' => 'a',
+ 'ₑ' => 'e',
+ 'ₒ' => 'o',
+ 'ₓ' => 'x',
+ 'ₔ' => 'ə',
+ 'ₕ' => 'h',
+ 'ₖ' => 'k',
+ 'ₗ' => 'l',
+ 'ₘ' => 'm',
+ 'ₙ' => 'n',
+ 'ₚ' => 'p',
+ 'ₛ' => 's',
+ 'ₜ' => 't',
+ '₨' => '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',
+ '℠' => 'SM',
+ '℡' => 'TEL',
+ '™' => 'TM',
+ 'ℤ' => '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',
+ '⨌' => '∫∫∫∫',
+ '⩴' => '::=',
+ '⩵' => '==',
+ '⩶' => '===',
+ 'ⱼ' => 'j',
+ 'ⱽ' => 'V',
+ 'ⵯ' => 'ⵡ',
+ '⺟' => '母',
+ '⻳' => '龟',
+ '⼀' => '一',
+ '⼁' => '丨',
+ '⼂' => '丶',
+ '⼃' => '丿',
+ '⼄' => '乙',
+ '⼅' => '亅',
+ '⼆' => '二',
+ '⼇' => '亠',
+ '⼈' => '人',
+ '⼉' => '儿',
+ '⼊' => '入',
+ '⼋' => '八',
+ '⼌' => '冂',
+ '⼍' => '冖',
+ '⼎' => '冫',
+ '⼏' => '几',
+ '⼐' => '凵',
+ '⼑' => '刀',
+ '⼒' => '力',
+ '⼓' => '勹',
+ '⼔' => '匕',
+ '⼕' => '匚',
+ '⼖' => '匸',
+ '⼗' => '十',
+ '⼘' => '卜',
+ '⼙' => '卩',
+ '⼚' => '厂',
+ '⼛' => '厶',
+ '⼜' => '又',
+ '⼝' => '口',
+ '⼞' => '囗',
+ '⼟' => '土',
+ '⼠' => '士',
+ '⼡' => '夂',
+ '⼢' => '夊',
+ '⼣' => '夕',
+ '⼤' => '大',
+ '⼥' => '女',
+ '⼦' => '子',
+ '⼧' => '宀',
+ '⼨' => '寸',
+ '⼩' => '小',
+ '⼪' => '尢',
+ '⼫' => '尸',
+ '⼬' => '屮',
+ '⼭' => '山',
+ '⼮' => '巛',
+ '⼯' => '工',
+ '⼰' => '己',
+ '⼱' => '巾',
+ '⼲' => '干',
+ '⼳' => '幺',
+ '⼴' => '广',
+ '⼵' => '廴',
+ '⼶' => '廾',
+ '⼷' => '弋',
+ '⼸' => '弓',
+ '⼹' => '彐',
+ '⼺' => '彡',
+ '⼻' => '彳',
+ '⼼' => '心',
+ '⼽' => '戈',
+ '⼾' => '戶',
+ '⼿' => '手',
+ '⽀' => '支',
+ '⽁' => '攴',
+ '⽂' => '文',
+ '⽃' => '斗',
+ '⽄' => '斤',
+ '⽅' => '方',
+ '⽆' => '无',
+ '⽇' => '日',
+ '⽈' => '曰',
+ '⽉' => '月',
+ '⽊' => '木',
+ '⽋' => '欠',
+ '⽌' => '止',
+ '⽍' => '歹',
+ '⽎' => '殳',
+ '⽏' => '毋',
+ '⽐' => '比',
+ '⽑' => '毛',
+ '⽒' => '氏',
+ '⽓' => '气',
+ '⽔' => '水',
+ '⽕' => '火',
+ '⽖' => '爪',
+ '⽗' => '父',
+ '⽘' => '爻',
+ '⽙' => '爿',
+ '⽚' => '片',
+ '⽛' => '牙',
+ '⽜' => '牛',
+ '⽝' => '犬',
+ '⽞' => '玄',
+ '⽟' => '玉',
+ '⽠' => '瓜',
+ '⽡' => '瓦',
+ '⽢' => '甘',
+ '⽣' => '生',
+ '⽤' => '用',
+ '⽥' => '田',
+ '⽦' => '疋',
+ '⽧' => '疒',
+ '⽨' => '癶',
+ '⽩' => '白',
+ '⽪' => '皮',
+ '⽫' => '皿',
+ '⽬' => '目',
+ '⽭' => '矛',
+ '⽮' => '矢',
+ '⽯' => '石',
+ '⽰' => '示',
+ '⽱' => '禸',
+ '⽲' => '禾',
+ '⽳' => '穴',
+ '⽴' => '立',
+ '⽵' => '竹',
+ '⽶' => '米',
+ '⽷' => '糸',
+ '⽸' => '缶',
+ '⽹' => '网',
+ '⽺' => '羊',
+ '⽻' => '羽',
+ '⽼' => '老',
+ '⽽' => '而',
+ '⽾' => '耒',
+ '⽿' => '耳',
+ '⾀' => '聿',
+ '⾁' => '肉',
+ '⾂' => '臣',
+ '⾃' => '自',
+ '⾄' => '至',
+ '⾅' => '臼',
+ '⾆' => '舌',
+ '⾇' => '舛',
+ '⾈' => '舟',
+ '⾉' => '艮',
+ '⾊' => '色',
+ '⾋' => '艸',
+ '⾌' => '虍',
+ '⾍' => '虫',
+ '⾎' => '血',
+ '⾏' => '行',
+ '⾐' => '衣',
+ '⾑' => '襾',
+ '⾒' => '見',
+ '⾓' => '角',
+ '⾔' => '言',
+ '⾕' => '谷',
+ '⾖' => '豆',
+ '⾗' => '豕',
+ '⾘' => '豸',
+ '⾙' => '貝',
+ '⾚' => '赤',
+ '⾛' => '走',
+ '⾜' => '足',
+ '⾝' => '身',
+ '⾞' => '車',
+ '⾟' => '辛',
+ '⾠' => '辰',
+ '⾡' => '辵',
+ '⾢' => '邑',
+ '⾣' => '酉',
+ '⾤' => '釆',
+ '⾥' => '里',
+ '⾦' => '金',
+ '⾧' => '長',
+ '⾨' => '門',
+ '⾩' => '阜',
+ '⾪' => '隶',
+ '⾫' => '隹',
+ '⾬' => '雨',
+ '⾭' => '靑',
+ '⾮' => '非',
+ '⾯' => '面',
+ '⾰' => '革',
+ '⾱' => '韋',
+ '⾲' => '韭',
+ '⾳' => '音',
+ '⾴' => '頁',
+ '⾵' => '風',
+ '⾶' => '飛',
+ '⾷' => '食',
+ '⾸' => '首',
+ '⾹' => '香',
+ '⾺' => '馬',
+ '⾻' => '骨',
+ '⾼' => '高',
+ '⾽' => '髟',
+ '⾾' => '鬥',
+ '⾿' => '鬯',
+ '⿀' => '鬲',
+ '⿁' => '鬼',
+ '⿂' => '魚',
+ '⿃' => '鳥',
+ '⿄' => '鹵',
+ '⿅' => '鹿',
+ '⿆' => '麥',
+ '⿇' => '麻',
+ '⿈' => '黃',
+ '⿉' => '黍',
+ '⿊' => '黑',
+ '⿋' => '黹',
+ '⿌' => '黽',
+ '⿍' => '鼎',
+ '⿎' => '鼓',
+ '⿏' => '鼠',
+ '⿐' => '鼻',
+ '⿑' => '齊',
+ '⿒' => '齒',
+ '⿓' => '龍',
+ '⿔' => '龜',
+ '⿕' => '龠',
+ ' ' => ' ',
+ '〶' => '〒',
+ '〸' => '十',
+ '〹' => '卄',
+ '〺' => '卅',
+ '゛' => ' ゙',
+ '゜' => ' ゚',
+ 'ゟ' => 'より',
+ 'ヿ' => 'コト',
+ 'ㄱ' => 'ᄀ',
+ 'ㄲ' => 'ᄁ',
+ 'ㄳ' => 'ᆪ',
+ 'ㄴ' => 'ᄂ',
+ 'ㄵ' => 'ᆬ',
+ 'ㄶ' => 'ᆭ',
+ 'ㄷ' => 'ᄃ',
+ 'ㄸ' => 'ᄄ',
+ 'ㄹ' => 'ᄅ',
+ 'ㄺ' => 'ᆰ',
+ 'ㄻ' => 'ᆱ',
+ 'ㄼ' => 'ᆲ',
+ 'ㄽ' => 'ᆳ',
+ 'ㄾ' => 'ᆴ',
+ 'ㄿ' => 'ᆵ',
+ 'ㅀ' => 'ᄚ',
+ 'ㅁ' => 'ᄆ',
+ 'ㅂ' => 'ᄇ',
+ 'ㅃ' => 'ᄈ',
+ 'ㅄ' => 'ᄡ',
+ 'ㅅ' => 'ᄉ',
+ 'ㅆ' => 'ᄊ',
+ 'ㅇ' => 'ᄋ',
+ 'ㅈ' => 'ᄌ',
+ 'ㅉ' => 'ᄍ',
+ 'ㅊ' => 'ᄎ',
+ 'ㅋ' => 'ᄏ',
+ 'ㅌ' => 'ᄐ',
+ 'ㅍ' => 'ᄑ',
+ 'ㅎ' => 'ᄒ',
+ 'ㅏ' => 'ᅡ',
+ 'ㅐ' => 'ᅢ',
+ 'ㅑ' => 'ᅣ',
+ 'ㅒ' => 'ᅤ',
+ 'ㅓ' => 'ᅥ',
+ 'ㅔ' => 'ᅦ',
+ 'ㅕ' => 'ᅧ',
+ 'ㅖ' => 'ᅨ',
+ 'ㅗ' => 'ᅩ',
+ 'ㅘ' => 'ᅪ',
+ 'ㅙ' => 'ᅫ',
+ 'ㅚ' => 'ᅬ',
+ 'ㅛ' => 'ᅭ',
+ 'ㅜ' => 'ᅮ',
+ 'ㅝ' => 'ᅯ',
+ 'ㅞ' => 'ᅰ',
+ 'ㅟ' => 'ᅱ',
+ 'ㅠ' => 'ᅲ',
+ 'ㅡ' => 'ᅳ',
+ 'ㅢ' => 'ᅴ',
+ 'ㅣ' => 'ᅵ',
+ 'ㅤ' => 'ᅠ',
+ 'ㅥ' => 'ᄔ',
+ 'ㅦ' => 'ᄕ',
+ 'ㅧ' => 'ᇇ',
+ 'ㅨ' => 'ᇈ',
+ 'ㅩ' => 'ᇌ',
+ 'ㅪ' => 'ᇎ',
+ 'ㅫ' => 'ᇓ',
+ 'ㅬ' => 'ᇗ',
+ 'ㅭ' => 'ᇙ',
+ 'ㅮ' => 'ᄜ',
+ 'ㅯ' => 'ᇝ',
+ 'ㅰ' => 'ᇟ',
+ 'ㅱ' => 'ᄝ',
+ 'ㅲ' => 'ᄞ',
+ 'ㅳ' => 'ᄠ',
+ 'ㅴ' => 'ᄢ',
+ 'ㅵ' => 'ᄣ',
+ 'ㅶ' => 'ᄧ',
+ 'ㅷ' => 'ᄩ',
+ 'ㅸ' => 'ᄫ',
+ 'ㅹ' => 'ᄬ',
+ 'ㅺ' => 'ᄭ',
+ 'ㅻ' => 'ᄮ',
+ 'ㅼ' => 'ᄯ',
+ 'ㅽ' => 'ᄲ',
+ 'ㅾ' => 'ᄶ',
+ 'ㅿ' => 'ᅀ',
+ 'ㆀ' => 'ᅇ',
+ 'ㆁ' => 'ᅌ',
+ 'ㆂ' => 'ᇱ',
+ 'ㆃ' => 'ᇲ',
+ 'ㆄ' => 'ᅗ',
+ 'ㆅ' => 'ᅘ',
+ 'ㆆ' => 'ᅙ',
+ 'ㆇ' => 'ᆄ',
+ 'ㆈ' => 'ᆅ',
+ 'ㆉ' => 'ᆈ',
+ 'ㆊ' => 'ᆑ',
+ 'ㆋ' => 'ᆒ',
+ 'ㆌ' => 'ᆔ',
+ 'ㆍ' => 'ᆞ',
+ 'ㆎ' => 'ᆡ',
+ '㆒' => '一',
+ '㆓' => '二',
+ '㆔' => '三',
+ '㆕' => '四',
+ '㆖' => '上',
+ '㆗' => '中',
+ '㆘' => '下',
+ '㆙' => '甲',
+ '㆚' => '乙',
+ '㆛' => '丙',
+ '㆜' => '丁',
+ '㆝' => '天',
+ '㆞' => '地',
+ '㆟' => '人',
+ '㈀' => '(ᄀ)',
+ '㈁' => '(ᄂ)',
+ '㈂' => '(ᄃ)',
+ '㈃' => '(ᄅ)',
+ '㈄' => '(ᄆ)',
+ '㈅' => '(ᄇ)',
+ '㈆' => '(ᄉ)',
+ '㈇' => '(ᄋ)',
+ '㈈' => '(ᄌ)',
+ '㈉' => '(ᄎ)',
+ '㈊' => '(ᄏ)',
+ '㈋' => '(ᄐ)',
+ '㈌' => '(ᄑ)',
+ '㈍' => '(ᄒ)',
+ '㈎' => '(가)',
+ '㈏' => '(나)',
+ '㈐' => '(다)',
+ '㈑' => '(라)',
+ '㈒' => '(마)',
+ '㈓' => '(바)',
+ '㈔' => '(사)',
+ '㈕' => '(아)',
+ '㈖' => '(자)',
+ '㈗' => '(차)',
+ '㈘' => '(카)',
+ '㈙' => '(타)',
+ '㈚' => '(파)',
+ '㈛' => '(하)',
+ '㈜' => '(주)',
+ '㈝' => '(오전)',
+ '㈞' => '(오후)',
+ '㈠' => '(一)',
+ '㈡' => '(二)',
+ '㈢' => '(三)',
+ '㈣' => '(四)',
+ '㈤' => '(五)',
+ '㈥' => '(六)',
+ '㈦' => '(七)',
+ '㈧' => '(八)',
+ '㈨' => '(九)',
+ '㈩' => '(十)',
+ '㈪' => '(月)',
+ '㈫' => '(火)',
+ '㈬' => '(水)',
+ '㈭' => '(木)',
+ '㈮' => '(金)',
+ '㈯' => '(土)',
+ '㈰' => '(日)',
+ '㈱' => '(株)',
+ '㈲' => '(有)',
+ '㈳' => '(社)',
+ '㈴' => '(名)',
+ '㈵' => '(特)',
+ '㈶' => '(財)',
+ '㈷' => '(祝)',
+ '㈸' => '(労)',
+ '㈹' => '(代)',
+ '㈺' => '(呼)',
+ '㈻' => '(学)',
+ '㈼' => '(監)',
+ '㈽' => '(企)',
+ '㈾' => '(資)',
+ '㈿' => '(協)',
+ '㉀' => '(祭)',
+ '㉁' => '(休)',
+ '㉂' => '(自)',
+ '㉃' => '(至)',
+ '㉄' => '問',
+ '㉅' => '幼',
+ '㉆' => '文',
+ '㉇' => '箏',
+ '㉐' => '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',
+ '㍸' => 'dm2',
+ '㍹' => 'dm3',
+ '㍺' => 'IU',
+ '㍻' => '平成',
+ '㍼' => '昭和',
+ '㍽' => '大正',
+ '㍾' => '明治',
+ '㍿' => '株式会社',
+ '㎀' => 'pA',
+ '㎁' => 'nA',
+ '㎂' => 'μA',
+ '㎃' => 'mA',
+ '㎄' => 'kA',
+ '㎅' => 'KB',
+ '㎆' => 'MB',
+ '㎇' => 'GB',
+ '㎈' => 'cal',
+ '㎉' => 'kcal',
+ '㎊' => 'pF',
+ '㎋' => 'nF',
+ '㎌' => 'μF',
+ '㎍' => 'μg',
+ '㎎' => 'mg',
+ '㎏' => 'kg',
+ '㎐' => 'Hz',
+ '㎑' => 'kHz',
+ '㎒' => 'MHz',
+ '㎓' => 'GHz',
+ '㎔' => 'THz',
+ '㎕' => 'μl',
+ '㎖' => 'ml',
+ '㎗' => 'dl',
+ '㎘' => 'kl',
+ '㎙' => 'fm',
+ '㎚' => 'nm',
+ '㎛' => 'μm',
+ '㎜' => 'mm',
+ '㎝' => 'cm',
+ '㎞' => 'km',
+ '㎟' => 'mm2',
+ '㎠' => 'cm2',
+ '㎡' => 'm2',
+ '㎢' => 'km2',
+ '㎣' => 'mm3',
+ '㎤' => 'cm3',
+ '㎥' => 'm3',
+ '㎦' => 'km3',
+ '㎧' => 'm∕s',
+ '㎨' => 'm∕s2',
+ '㎩' => 'Pa',
+ '㎪' => 'kPa',
+ '㎫' => 'MPa',
+ '㎬' => 'GPa',
+ '㎭' => 'rad',
+ '㎮' => 'rad∕s',
+ '㎯' => 'rad∕s2',
+ '㎰' => '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' => 'st',
+ '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',
+ '🅪' => 'MC',
+ '🅫' => 'MD',
+ '🅬' => 'MR',
+ '🆐' => 'DJ',
+ '🈀' => 'ほか',
+ '🈁' => 'ココ',
+ '🈂' => 'サ',
+ '🈐' => '手',
+ '🈑' => '字',
+ '🈒' => '双',
+ '🈓' => 'デ',
+ '🈔' => '二',
+ '🈕' => '多',
+ '🈖' => '解',
+ '🈗' => '天',
+ '🈘' => '交',
+ '🈙' => '映',
+ '🈚' => '無',
+ '🈛' => '料',
+ '🈜' => '前',
+ '🈝' => '後',
+ '🈞' => '再',
+ '🈟' => '新',
+ '🈠' => '初',
+ '🈡' => '終',
+ '🈢' => '生',
+ '🈣' => '販',
+ '🈤' => '声',
+ '🈥' => '吹',
+ '🈦' => '演',
+ '🈧' => '投',
+ '🈨' => '捕',
+ '🈩' => '一',
+ '🈪' => '三',
+ '🈫' => '遊',
+ '🈬' => '左',
+ '🈭' => '中',
+ '🈮' => '右',
+ '🈯' => '指',
+ '🈰' => '走',
+ '🈱' => '打',
+ '🈲' => '禁',
+ '🈳' => '空',
+ '🈴' => '合',
+ '🈵' => '満',
+ '🈶' => '有',
+ '🈷' => '月',
+ '🈸' => '申',
+ '🈹' => '割',
+ '🈺' => '営',
+ '🈻' => '配',
+ '🉀' => '〔本〕',
+ '🉁' => '〔三〕',
+ '🉂' => '〔二〕',
+ '🉃' => '〔安〕',
+ '🉄' => '〔点〕',
+ '🉅' => '〔打〕',
+ '🉆' => '〔盗〕',
+ '🉇' => '〔勝〕',
+ '🉈' => '〔敗〕',
+ '🉐' => '得',
+ '🉑' => '可',
+ '🯰' => '0',
+ '🯱' => '1',
+ '🯲' => '2',
+ '🯳' => '3',
+ '🯴' => '4',
+ '🯵' => '5',
+ '🯶' => '6',
+ '🯷' => '7',
+ '🯸' => '8',
+ '🯹' => '9',
+);
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
new file mode 100644
index 0000000..3608e5c
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
@@ -0,0 +1,23 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Intl\Normalizer as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('normalizer_is_normalized')) {
+ function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); }
+}
+if (!function_exists('normalizer_normalize')) {
+ function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
new file mode 100644
index 0000000..e36d1a9
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
@@ -0,0 +1,19 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Intl\Normalizer as p;
+
+if (!function_exists('normalizer_is_normalized')) {
+ function normalizer_is_normalized(?string $string, ?int $form = p\Normalizer::FORM_C): bool { return p\Normalizer::isNormalized((string) $string, (int) $form); }
+}
+if (!function_exists('normalizer_normalize')) {
+ function normalizer_normalize(?string $string, ?int $form = p\Normalizer::FORM_C): string|false { return p\Normalizer::normalize((string) $string, (int) $form); }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-intl-normalizer/composer.json b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/composer.json
new file mode 100644
index 0000000..1b93573
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-intl-normalizer/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "symfony/polyfill-intl-normalizer",
+ "type": "library",
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" },
+ "files": [ "bootstrap.php" ],
+ "classmap": [ "Resources/stubs" ]
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/LICENSE b/assets/opencc/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 0000000..6e3afce
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-present 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/assets/opencc/vendor/symfony/polyfill-mbstring/Mbstring.php b/assets/opencc/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 0000000..1ad33a8
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,996 @@
+
+ *
+ * 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_str_split - Convert a string to an array
+ * - 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
+ * - mb_ucfirst - Make a string's first character uppercase
+ * - mb_lcfirst - Make a string's first character lowercase
+ *
+ * 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
+{
+ public const MB_CASE_FOLD = \PHP_INT_MAX;
+
+ private const SIMPLE_CASE_FOLD = [
+ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
+ ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'],
+ ];
+
+ private static $encodingList = ['ASCII', 'UTF-8'];
+ private static $language = 'neutral';
+ private static $internalEncoding = 'UTF-8';
+
+ public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+ {
+ if (\is_array($s)) {
+ if (PHP_VERSION_ID < 70200) {
+ trigger_error('mb_convert_encoding() expects parameter 1 to be string, array given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ $r = [];
+ foreach ($s as $str) {
+ $r[] = self::mb_convert_encoding($str, $toEncoding, $fromEncoding);
+ }
+
+ return $r;
+ }
+
+ if (\is_array($fromEncoding) || (null !== $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]+/', [__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, &...$vars)
+ {
+ $ok = true;
+ array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+ if (false === $v = self::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) || (80000 > \PHP_VERSION_ID && !$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 self::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) || (80000 > \PHP_VERSION_ID && !$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 = ["\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, [__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) {
+ static $caseFolding = null;
+ if (null === $caseFolding) {
+ $caseFolding = self::getData('caseFolding');
+ }
+ $s = strtr($s, $caseFolding);
+ }
+
+ static $lower = null;
+ if (null === $lower) {
+ $lower = self::getData('lowerCase');
+ }
+ $map = $lower;
+ }
+
+ static $ulenMask = ["\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;
+ }
+
+ $normalizedEncoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) {
+ self::$internalEncoding = $normalizedEncoding;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding));
+ }
+
+ public static function mb_language($lang = null)
+ {
+ if (null === $lang) {
+ return self::$language;
+ }
+
+ switch ($normalizedLang = strtolower($lang)) {
+ case 'uni':
+ case 'neutral':
+ self::$language = $normalizedLang;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang));
+ }
+
+ public static function mb_list_encodings()
+ {
+ return ['UTF-8'];
+ }
+
+ public static function mb_encoding_aliases($encoding)
+ {
+ switch (strtoupper($encoding)) {
+ case 'UTF8':
+ case 'UTF-8':
+ return ['utf8'];
+ }
+
+ return false;
+ }
+
+ public static function mb_check_encoding($var = null, $encoding = null)
+ {
+ if (\PHP_VERSION_ID < 70200 && \is_array($var)) {
+ trigger_error('mb_check_encoding() expects parameter 1 to be string, array given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (null === $encoding) {
+ if (null === $var) {
+ return false;
+ }
+ $encoding = self::$internalEncoding;
+ }
+
+ if (!\is_array($var)) {
+ return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
+ }
+
+ foreach ($var as $key => $value) {
+ if (!self::mb_check_encoding($key, $encoding)) {
+ return false;
+ }
+ if (!self::mb_check_encoding($value, $encoding)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ 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) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING);
+
+ return false;
+ }
+
+ return 0;
+ }
+
+ 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) {
+ if (0 > $offset += self::mb_strlen($needle)) {
+ $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+ }
+ $offset = 0;
+ } else {
+ $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+ }
+ }
+
+ $pos = '' !== $needle || 80000 > \PHP_VERSION_ID
+ ? iconv_strrpos($haystack, $needle, $encoding)
+ : self::mb_strlen($haystack, $encoding);
+
+ return false !== $pos ? $offset + $pos : false;
+ }
+
+ public static function mb_str_split($string, $split_length = 1, $encoding = null)
+ {
+ if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) {
+ trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (1 > $split_length = (int) $split_length) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);
+
+ return false;
+ }
+
+ throw new \ValueError('Argument #2 ($length) must be greater than 0');
+ }
+
+ if (null === $encoding) {
+ $encoding = mb_internal_encoding();
+ }
+
+ if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+ $rx = '/(';
+ while (65535 < $split_length) {
+ $rx .= '.{65535}';
+ $split_length -= 65535;
+ }
+ $rx .= '.{'.$split_length.'})/us';
+
+ return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
+ }
+
+ $result = [];
+ $length = mb_strlen($string, $encoding);
+
+ for ($i = 0; $i < $length; $i += $split_length) {
+ $result[] = mb_substr($string, $i, $split_length, $encoding);
+ }
+
+ return $result;
+ }
+
+ 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 (null === $c) {
+ return 'none';
+ }
+ if (0 === strcasecmp($c, 'none')) {
+ return true;
+ }
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+ if (\is_int($c) || 'long' === $c || 'entity' === $c) {
+ return false;
+ }
+
+ throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint');
+ }
+
+ public static function mb_substr($s, $start, $length = null, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return (string) 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, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [
+ self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding),
+ self::mb_convert_case($needle, \MB_CASE_LOWER, $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) {
+ $pos = strrpos($haystack, $needle);
+ } else {
+ $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, \MB_CASE_LOWER, $encoding);
+ $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding);
+
+ $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack);
+ $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle);
+
+ 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 = [
+ '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;
+ }
+
+ public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string
+ {
+ if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
+ throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
+ }
+
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ if (self::mb_strlen($pad_string, $encoding) <= 0) {
+ throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
+ }
+
+ $paddingRequired = $length - self::mb_strlen($string, $encoding);
+
+ if ($paddingRequired < 1) {
+ return $string;
+ }
+
+ switch ($pad_type) {
+ case \STR_PAD_LEFT:
+ return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string;
+ case \STR_PAD_RIGHT:
+ return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
+ default:
+ $leftPaddingLength = floor($paddingRequired / 2);
+ $rightPaddingLength = $paddingRequired - $leftPaddingLength;
+
+ return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
+ }
+ }
+
+ public static function mb_ucfirst(string $string, ?string $encoding = null): string
+ {
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ $firstChar = mb_substr($string, 0, 1, $encoding);
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_TITLE, $encoding);
+
+ return $firstChar.mb_substr($string, 1, null, $encoding);
+ }
+
+ public static function mb_lcfirst(string $string, ?string $encoding = null): string
+ {
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ $firstChar = mb_substr($string, 0, 1, $encoding);
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_LOWER, $encoding);
+
+ return $firstChar.mb_substr($string, 1, null, $encoding);
+ }
+
+ 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;
+ }
+
+ if ('UTF-8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ $encoding = strtoupper($encoding);
+
+ if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+ return 'CP850';
+ }
+
+ if ('UTF8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ return $encoding;
+ }
+
+ private static function assertEncoding(string $encoding, string $errorFormat): void
+ {
+ try {
+ $validEncoding = @self::mb_check_encoding('', $encoding);
+ } catch (\ValueError $e) {
+ throw new \ValueError(\sprintf($errorFormat, $encoding));
+ }
+
+ // BC for PHP 7.3 and lower
+ if (!$validEncoding) {
+ throw new \ValueError(\sprintf($errorFormat, $encoding));
+ }
+ }
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/README.md b/assets/opencc/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 0000000..478b40d
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](https://php.net/mbstring) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php b/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
new file mode 100644
index 0000000..512bba0
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
@@ -0,0 +1,119 @@
+ 'i̇',
+ 'µ' => 'μ',
+ 'ſ' => 's',
+ 'ͅ' => 'ι',
+ 'ς' => 'σ',
+ 'ϐ' => 'β',
+ 'ϑ' => 'θ',
+ 'ϕ' => 'φ',
+ 'ϖ' => 'π',
+ 'ϰ' => 'κ',
+ 'ϱ' => 'ρ',
+ 'ϵ' => 'ε',
+ 'ẛ' => 'ṡ',
+ 'ι' => 'ι',
+ 'ß' => 'ss',
+ 'ʼn' => 'ʼn',
+ 'ǰ' => 'ǰ',
+ 'ΐ' => 'ΐ',
+ 'ΰ' => 'ΰ',
+ 'և' => 'եւ',
+ 'ẖ' => 'ẖ',
+ 'ẗ' => 'ẗ',
+ 'ẘ' => 'ẘ',
+ 'ẙ' => 'ẙ',
+ 'ẚ' => 'aʾ',
+ 'ẞ' => 'ss',
+ 'ὐ' => 'ὐ',
+ 'ὒ' => 'ὒ',
+ 'ὔ' => 'ὔ',
+ 'ὖ' => 'ὖ',
+ 'ᾀ' => 'ἀι',
+ 'ᾁ' => 'ἁι',
+ 'ᾂ' => 'ἂι',
+ 'ᾃ' => 'ἃι',
+ 'ᾄ' => 'ἄι',
+ 'ᾅ' => 'ἅι',
+ 'ᾆ' => 'ἆι',
+ 'ᾇ' => 'ἇι',
+ 'ᾈ' => 'ἀι',
+ 'ᾉ' => 'ἁι',
+ 'ᾊ' => 'ἂι',
+ 'ᾋ' => 'ἃι',
+ 'ᾌ' => 'ἄι',
+ 'ᾍ' => 'ἅι',
+ 'ᾎ' => 'ἆι',
+ 'ᾏ' => 'ἇι',
+ 'ᾐ' => 'ἠι',
+ 'ᾑ' => 'ἡι',
+ 'ᾒ' => 'ἢι',
+ 'ᾓ' => 'ἣι',
+ 'ᾔ' => 'ἤι',
+ 'ᾕ' => 'ἥι',
+ 'ᾖ' => 'ἦι',
+ 'ᾗ' => 'ἧι',
+ 'ᾘ' => 'ἠι',
+ 'ᾙ' => 'ἡι',
+ 'ᾚ' => 'ἢι',
+ 'ᾛ' => 'ἣι',
+ 'ᾜ' => 'ἤι',
+ 'ᾝ' => 'ἥι',
+ 'ᾞ' => 'ἦι',
+ 'ᾟ' => 'ἧι',
+ 'ᾠ' => 'ὠι',
+ 'ᾡ' => 'ὡι',
+ 'ᾢ' => 'ὢι',
+ 'ᾣ' => 'ὣι',
+ 'ᾤ' => 'ὤι',
+ 'ᾥ' => 'ὥι',
+ 'ᾦ' => 'ὦι',
+ 'ᾧ' => 'ὧι',
+ 'ᾨ' => 'ὠι',
+ 'ᾩ' => 'ὡι',
+ 'ᾪ' => 'ὢι',
+ 'ᾫ' => 'ὣι',
+ 'ᾬ' => 'ὤι',
+ 'ᾭ' => 'ὥι',
+ 'ᾮ' => 'ὦι',
+ 'ᾯ' => 'ὧι',
+ 'ᾲ' => 'ὰι',
+ 'ᾳ' => 'αι',
+ 'ᾴ' => 'άι',
+ 'ᾶ' => 'ᾶ',
+ 'ᾷ' => 'ᾶι',
+ 'ᾼ' => 'αι',
+ 'ῂ' => 'ὴι',
+ 'ῃ' => 'ηι',
+ 'ῄ' => 'ήι',
+ 'ῆ' => 'ῆ',
+ 'ῇ' => 'ῆι',
+ 'ῌ' => 'ηι',
+ 'ῒ' => 'ῒ',
+ 'ῖ' => 'ῖ',
+ 'ῗ' => 'ῗ',
+ 'ῢ' => 'ῢ',
+ 'ῤ' => 'ῤ',
+ 'ῦ' => 'ῦ',
+ 'ῧ' => 'ῧ',
+ 'ῲ' => 'ὼι',
+ 'ῳ' => 'ωι',
+ 'ῴ' => 'ώι',
+ 'ῶ' => 'ῶ',
+ 'ῷ' => 'ῶι',
+ 'ῼ' => 'ωι',
+ 'ff' => 'ff',
+ 'fi' => 'fi',
+ 'fl' => 'fl',
+ 'ffi' => 'ffi',
+ 'ffl' => 'ffl',
+ 'ſt' => 'st',
+ 'st' => 'st',
+ 'ﬓ' => 'մն',
+ 'ﬔ' => 'մե',
+ 'ﬕ' => 'մի',
+ 'ﬖ' => 'վն',
+ 'ﬗ' => 'մխ',
+];
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
new file mode 100644
index 0000000..fac60b0
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -0,0 +1,1397 @@
+ '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/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/assets/opencc/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
new file mode 100644
index 0000000..2a8f6e7
--- /dev/null
+++ b/assets/opencc/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',
+ '𐐨' => '𐐀',
+ '𐐩' => '𐐁',
+ '𐐪' => '𐐂',
+ '𐐫' => '𐐃',
+ '𐐬' => '𐐄',
+ '𐐭' => '𐐅',
+ '𐐮' => '𐐆',
+ '𐐯' => '𐐇',
+ '𐐰' => '𐐈',
+ '𐐱' => '𐐉',
+ '𐐲' => '𐐊',
+ '𐐳' => '𐐋',
+ '𐐴' => '𐐌',
+ '𐐵' => '𐐍',
+ '𐐶' => '𐐎',
+ '𐐷' => '𐐏',
+ '𐐸' => '𐐐',
+ '𐐹' => '𐐑',
+ '𐐺' => '𐐒',
+ '𐐻' => '𐐓',
+ '𐐼' => '𐐔',
+ '𐐽' => '𐐕',
+ '𐐾' => '𐐖',
+ '𐐿' => '𐐗',
+ '𐑀' => '𐐘',
+ '𐑁' => '𐐙',
+ '𐑂' => '𐐚',
+ '𐑃' => '𐐛',
+ '𐑄' => '𐐜',
+ '𐑅' => '𐐝',
+ '𐑆' => '𐐞',
+ '𐑇' => '𐐟',
+ '𐑈' => '𐐠',
+ '𐑉' => '𐐡',
+ '𐑊' => '𐐢',
+ '𐑋' => '𐐣',
+ '𐑌' => '𐐤',
+ '𐑍' => '𐐥',
+ '𐑎' => '𐐦',
+ '𐑏' => '𐐧',
+ '𐓘' => '𐒰',
+ '𐓙' => '𐒱',
+ '𐓚' => '𐒲',
+ '𐓛' => '𐒳',
+ '𐓜' => '𐒴',
+ '𐓝' => '𐒵',
+ '𐓞' => '𐒶',
+ '𐓟' => '𐒷',
+ '𐓠' => '𐒸',
+ '𐓡' => '𐒹',
+ '𐓢' => '𐒺',
+ '𐓣' => '𐒻',
+ '𐓤' => '𐒼',
+ '𐓥' => '𐒽',
+ '𐓦' => '𐒾',
+ '𐓧' => '𐒿',
+ '𐓨' => '𐓀',
+ '𐓩' => '𐓁',
+ '𐓪' => '𐓂',
+ '𐓫' => '𐓃',
+ '𐓬' => '𐓄',
+ '𐓭' => '𐓅',
+ '𐓮' => '𐓆',
+ '𐓯' => '𐓇',
+ '𐓰' => '𐓈',
+ '𐓱' => '𐓉',
+ '𐓲' => '𐓊',
+ '𐓳' => '𐓋',
+ '𐓴' => '𐓌',
+ '𐓵' => '𐓍',
+ '𐓶' => '𐓎',
+ '𐓷' => '𐓏',
+ '𐓸' => '𐓐',
+ '𐓹' => '𐓑',
+ '𐓺' => '𐓒',
+ '𐓻' => '𐓓',
+ '𐳀' => '𐲀',
+ '𐳁' => '𐲁',
+ '𐳂' => '𐲂',
+ '𐳃' => '𐲃',
+ '𐳄' => '𐲄',
+ '𐳅' => '𐲅',
+ '𐳆' => '𐲆',
+ '𐳇' => '𐲇',
+ '𐳈' => '𐲈',
+ '𐳉' => '𐲉',
+ '𐳊' => '𐲊',
+ '𐳋' => '𐲋',
+ '𐳌' => '𐲌',
+ '𐳍' => '𐲍',
+ '𐳎' => '𐲎',
+ '𐳏' => '𐲏',
+ '𐳐' => '𐲐',
+ '𐳑' => '𐲑',
+ '𐳒' => '𐲒',
+ '𐳓' => '𐲓',
+ '𐳔' => '𐲔',
+ '𐳕' => '𐲕',
+ '𐳖' => '𐲖',
+ '𐳗' => '𐲗',
+ '𐳘' => '𐲘',
+ '𐳙' => '𐲙',
+ '𐳚' => '𐲚',
+ '𐳛' => '𐲛',
+ '𐳜' => '𐲜',
+ '𐳝' => '𐲝',
+ '𐳞' => '𐲞',
+ '𐳟' => '𐲟',
+ '𐳠' => '𐲠',
+ '𐳡' => '𐲡',
+ '𐳢' => '𐲢',
+ '𐳣' => '𐲣',
+ '𐳤' => '𐲤',
+ '𐳥' => '𐲥',
+ '𐳦' => '𐲦',
+ '𐳧' => '𐲧',
+ '𐳨' => '𐲨',
+ '𐳩' => '𐲩',
+ '𐳪' => '𐲪',
+ '𐳫' => '𐲫',
+ '𐳬' => '𐲬',
+ '𐳭' => '𐲭',
+ '𐳮' => '𐲮',
+ '𐳯' => '𐲯',
+ '𐳰' => '𐲰',
+ '𐳱' => '𐲱',
+ '𐳲' => '𐲲',
+ '𑣀' => '𑢠',
+ '𑣁' => '𑢡',
+ '𑣂' => '𑢢',
+ '𑣃' => '𑢣',
+ '𑣄' => '𑢤',
+ '𑣅' => '𑢥',
+ '𑣆' => '𑢦',
+ '𑣇' => '𑢧',
+ '𑣈' => '𑢨',
+ '𑣉' => '𑢩',
+ '𑣊' => '𑢪',
+ '𑣋' => '𑢫',
+ '𑣌' => '𑢬',
+ '𑣍' => '𑢭',
+ '𑣎' => '𑢮',
+ '𑣏' => '𑢯',
+ '𑣐' => '𑢰',
+ '𑣑' => '𑢱',
+ '𑣒' => '𑢲',
+ '𑣓' => '𑢳',
+ '𑣔' => '𑢴',
+ '𑣕' => '𑢵',
+ '𑣖' => '𑢶',
+ '𑣗' => '𑢷',
+ '𑣘' => '𑢸',
+ '𑣙' => '𑢹',
+ '𑣚' => '𑢺',
+ '𑣛' => '𑢻',
+ '𑣜' => '𑢼',
+ '𑣝' => '𑢽',
+ '𑣞' => '𑢾',
+ '𑣟' => '𑢿',
+ '𖹠' => '𖹀',
+ '𖹡' => '𖹁',
+ '𖹢' => '𖹂',
+ '𖹣' => '𖹃',
+ '𖹤' => '𖹄',
+ '𖹥' => '𖹅',
+ '𖹦' => '𖹆',
+ '𖹧' => '𖹇',
+ '𖹨' => '𖹈',
+ '𖹩' => '𖹉',
+ '𖹪' => '𖹊',
+ '𖹫' => '𖹋',
+ '𖹬' => '𖹌',
+ '𖹭' => '𖹍',
+ '𖹮' => '𖹎',
+ '𖹯' => '𖹏',
+ '𖹰' => '𖹐',
+ '𖹱' => '𖹑',
+ '𖹲' => '𖹒',
+ '𖹳' => '𖹓',
+ '𖹴' => '𖹔',
+ '𖹵' => '𖹕',
+ '𖹶' => '𖹖',
+ '𖹷' => '𖹗',
+ '𖹸' => '𖹘',
+ '𖹹' => '𖹙',
+ '𖹺' => '𖹚',
+ '𖹻' => '𖹛',
+ '𖹼' => '𖹜',
+ '𖹽' => '𖹝',
+ '𖹾' => '𖹞',
+ '𖹿' => '𖹟',
+ '𞤢' => '𞤀',
+ '𞤣' => '𞤁',
+ '𞤤' => '𞤂',
+ '𞤥' => '𞤃',
+ '𞤦' => '𞤄',
+ '𞤧' => '𞤅',
+ '𞤨' => '𞤆',
+ '𞤩' => '𞤇',
+ '𞤪' => '𞤈',
+ '𞤫' => '𞤉',
+ '𞤬' => '𞤊',
+ '𞤭' => '𞤋',
+ '𞤮' => '𞤌',
+ '𞤯' => '𞤍',
+ '𞤰' => '𞤎',
+ '𞤱' => '𞤏',
+ '𞤲' => '𞤐',
+ '𞤳' => '𞤑',
+ '𞤴' => '𞤒',
+ '𞤵' => '𞤓',
+ '𞤶' => '𞤔',
+ '𞤷' => '𞤕',
+ '𞤸' => '𞤖',
+ '𞤹' => '𞤗',
+ '𞤺' => '𞤘',
+ '𞤻' => '𞤙',
+ '𞤼' => '𞤚',
+ '𞤽' => '𞤛',
+ '𞤾' => '𞤜',
+ '𞤿' => '𞤝',
+ '𞥀' => '𞤞',
+ '𞥁' => '𞤟',
+ '𞥂' => '𞤠',
+ '𞥃' => '𞤡',
+ 'ß' => 'SS',
+ 'ff' => 'FF',
+ 'fi' => 'FI',
+ 'fl' => 'FL',
+ 'ffi' => 'FFI',
+ 'ffl' => 'FFL',
+ 'ſt' => 'ST',
+ 'st' => 'ST',
+ 'և' => 'ԵՒ',
+ 'ﬓ' => 'ՄՆ',
+ 'ﬔ' => 'ՄԵ',
+ 'ﬕ' => 'ՄԻ',
+ 'ﬖ' => 'ՎՆ',
+ 'ﬗ' => 'ՄԽ',
+ 'ʼn' => 'ʼN',
+ 'ΐ' => 'Ϊ́',
+ 'ΰ' => 'Ϋ́',
+ 'ǰ' => 'J̌',
+ 'ẖ' => 'H̱',
+ 'ẗ' => 'T̈',
+ 'ẘ' => 'W̊',
+ 'ẙ' => 'Y̊',
+ 'ẚ' => 'Aʾ',
+ 'ὐ' => 'Υ̓',
+ 'ὒ' => 'Υ̓̀',
+ 'ὔ' => 'Υ̓́',
+ 'ὖ' => 'Υ̓͂',
+ 'ᾶ' => 'Α͂',
+ 'ῆ' => 'Η͂',
+ 'ῒ' => 'Ϊ̀',
+ 'ΐ' => 'Ϊ́',
+ 'ῖ' => 'Ι͂',
+ 'ῗ' => 'Ϊ͂',
+ 'ῢ' => 'Ϋ̀',
+ 'ΰ' => 'Ϋ́',
+ 'ῤ' => 'Ρ̓',
+ 'ῦ' => 'Υ͂',
+ 'ῧ' => 'Ϋ͂',
+ 'ῶ' => 'Ω͂',
+ 'ᾈ' => 'ἈΙ',
+ 'ᾉ' => 'ἉΙ',
+ 'ᾊ' => 'ἊΙ',
+ 'ᾋ' => 'ἋΙ',
+ 'ᾌ' => 'ἌΙ',
+ 'ᾍ' => 'ἍΙ',
+ 'ᾎ' => 'ἎΙ',
+ 'ᾏ' => 'ἏΙ',
+ 'ᾘ' => 'ἨΙ',
+ 'ᾙ' => 'ἩΙ',
+ 'ᾚ' => 'ἪΙ',
+ 'ᾛ' => 'ἫΙ',
+ 'ᾜ' => 'ἬΙ',
+ 'ᾝ' => 'ἭΙ',
+ 'ᾞ' => 'ἮΙ',
+ 'ᾟ' => 'ἯΙ',
+ 'ᾨ' => 'ὨΙ',
+ 'ᾩ' => 'ὩΙ',
+ 'ᾪ' => 'ὪΙ',
+ 'ᾫ' => 'ὫΙ',
+ 'ᾬ' => 'ὬΙ',
+ 'ᾭ' => 'ὭΙ',
+ 'ᾮ' => 'ὮΙ',
+ 'ᾯ' => 'ὯΙ',
+ 'ᾼ' => 'ΑΙ',
+ 'ῌ' => 'ΗΙ',
+ 'ῼ' => 'ΩΙ',
+ 'ᾲ' => 'ᾺΙ',
+ 'ᾴ' => 'ΆΙ',
+ 'ῂ' => 'ῊΙ',
+ 'ῄ' => 'ΉΙ',
+ 'ῲ' => 'ῺΙ',
+ 'ῴ' => 'ΏΙ',
+ 'ᾷ' => 'Α͂Ι',
+ 'ῇ' => 'Η͂Ι',
+ 'ῷ' => 'Ω͂Ι',
+);
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap.php b/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 0000000..d3d3347
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,165 @@
+
+ *
+ * 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 (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('mb_convert_encoding')) {
+ function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad($string, $length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT, $encoding = null) {
+ return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding);
+ }
+}
+
+if (!function_exists('mb_ucfirst')) {
+ function mb_ucfirst($string, $encoding = null) {
+ return p\Mbstring::mb_ucfirst($string, $encoding);
+ }
+}
+
+if (!function_exists('mb_lcfirst')) {
+ function mb_lcfirst($string, $encoding = null) {
+ return p\Mbstring::mb_lcfirst($string, $encoding);
+ }
+}
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap80.php b/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap80.php
new file mode 100644
index 0000000..ec2ae42
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/bootstrap80.php
@@ -0,0 +1,155 @@
+
+ *
+ * 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_convert_encoding')) {
+ function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
+}
+
+if (!function_exists('mb_ucfirst')) {
+ function mb_ucfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); }
+}
+
+if (!function_exists('mb_lcfirst')) {
+ function mb_lcfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/assets/opencc/vendor/symfony/polyfill-mbstring/composer.json b/assets/opencc/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 0000000..bd99d4b
--- /dev/null
+++ b/assets/opencc/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,38 @@
+{
+ "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": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/assets/opencc/vendor/symfony/process/CHANGELOG.md b/assets/opencc/vendor/symfony/process/CHANGELOG.md
new file mode 100644
index 0000000..e26819b
--- /dev/null
+++ b/assets/opencc/vendor/symfony/process/CHANGELOG.md
@@ -0,0 +1,124 @@
+CHANGELOG
+=========
+
+6.4
+---
+
+ * Add `PhpSubprocess` to handle PHP subprocesses that take over the
+ configuration from their parent
+ * Add `RunProcessMessage` and `RunProcessMessageHandler`
+ * Support using `Process::findExecutable()` independently of `open_basedir`
+
+5.2.0
+-----
+
+ * added `Process::setOptions()` to set `Process` specific options
+ * added option `create_new_console` to allow a subprocess to continue
+ to run after the main script exited, both on Linux and on Windows
+
+5.1.0
+-----
+
+ * added `Process::getStartTime()` to retrieve the start time of the process as float
+
+5.0.0
+-----
+
+ * removed `Process::inheritEnvironmentVariables()`
+ * removed `PhpProcess::setPhpBinary()`
+ * `Process` must be instantiated with a command array, use `Process::fromShellCommandline()` when the command should be parsed by the shell
+ * removed `Process::setCommandLine()`
+
+4.4.0
+-----
+
+ * deprecated `Process::inheritEnvironmentVariables()`: env variables are always inherited.
+ * added `Process::getLastOutputTime()` method
+
+4.2.0
+-----
+
+ * added the `Process::fromShellCommandline()` to run commands in a shell wrapper
+ * deprecated passing a command as string when creating a `Process` instance
+ * deprecated the `Process::setCommandline()` and the `PhpProcess::setPhpBinary()` methods
+ * added the `Process::waitUntil()` method to wait for the process only for a
+ specific output, then continue the normal execution of your application
+
+4.1.0
+-----
+
+ * added the `Process::isTtySupported()` method that allows to check for TTY support
+ * made `PhpExecutableFinder` look for the `PHP_BINARY` env var when searching the php binary
+ * added the `ProcessSignaledException` class to properly catch signaled process errors
+
+4.0.0
+-----
+
+ * environment variables will always be inherited
+ * added a second `array $env = []` argument to the `start()`, `run()`,
+ `mustRun()`, and `restart()` methods of the `Process` class
+ * added a second `array $env = []` argument to the `start()` method of the
+ `PhpProcess` class
+ * the `ProcessUtils::escapeArgument()` method has been removed
+ * the `areEnvironmentVariablesInherited()`, `getOptions()`, and `setOptions()`
+ methods of the `Process` class have been removed
+ * support for passing `proc_open()` options has been removed
+ * removed the `ProcessBuilder` class, use the `Process` class instead
+ * removed the `getEnhanceWindowsCompatibility()` and `setEnhanceWindowsCompatibility()` methods of the `Process` class
+ * passing a not existing working directory to the constructor of the `Symfony\Component\Process\Process` class is not
+ supported anymore
+
+3.4.0
+-----
+
+ * deprecated the ProcessBuilder class
+ * deprecated calling `Process::start()` without setting a valid working directory beforehand (via `setWorkingDirectory()` or constructor)
+
+3.3.0
+-----
+
+ * added command line arrays in the `Process` class
+ * added `$env` argument to `Process::start()`, `run()`, `mustRun()` and `restart()` methods
+ * deprecated the `ProcessUtils::escapeArgument()` method
+ * deprecated not inheriting environment variables
+ * deprecated configuring `proc_open()` options
+ * deprecated configuring enhanced Windows compatibility
+ * deprecated configuring enhanced sigchild compatibility
+
+2.5.0
+-----
+
+ * added support for PTY mode
+ * added the convenience method "mustRun"
+ * deprecation: Process::setStdin() is deprecated in favor of Process::setInput()
+ * deprecation: Process::getStdin() is deprecated in favor of Process::getInput()
+ * deprecation: Process::setInput() and ProcessBuilder::setInput() do not accept non-scalar types
+
+2.4.0
+-----
+
+ * added the ability to define an idle timeout
+
+2.3.0
+-----
+
+ * added ProcessUtils::escapeArgument() to fix the bug in escapeshellarg() function on Windows
+ * added Process::signal()
+ * added Process::getPid()
+ * added support for a TTY mode
+
+2.2.0
+-----
+
+ * added ProcessBuilder::setArguments() to reset the arguments on a builder
+ * added a way to retrieve the standard and error output incrementally
+ * added Process:restart()
+
+2.1.0
+-----
+
+ * added support for non-blocking processes (start(), wait(), isRunning(), stop())
+ * enhanced Windows compatibility
+ * added Process::getExitCodeText() that returns a string representation for
+ the exit code returned by the process
+ * added ProcessBuilder
diff --git a/assets/opencc/vendor/symfony/process/Exception/ExceptionInterface.php b/assets/opencc/vendor/symfony/process/Exception/ExceptionInterface.php
new file mode 100644
index 0000000..bd4a604
--- /dev/null
+++ b/assets/opencc/vendor/symfony/process/Exception/ExceptionInterface.php
@@ -0,0 +1,21 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Process\Exception;
+
+/**
+ * Marker Interface for the Process Component.
+ *
+ * @author Johannes M. Schmitt
+ private string $partChar = '=';
+ //
+ private string $chapterChar = '-';
+ //
+ private string $sectionChar = '~';
+ //
+ private string $subsectionChar = '.';
+ //
+ private string $subsubsectionChar = '^';
+ //
+ private string $paragraphsChar = '"';
+
+ private array $visibleNamespaces = [];
+
+ public function describe(OutputInterface $output, object $object, array $options = []): void
+ {
+ $decorated = $output->isDecorated();
+ $output->setDecorated(false);
+
+ parent::describe($output, $object, $options);
+
+ $output->setDecorated($decorated);
+ }
+
+ /**
+ * Override parent method to set $decorated = true.
+ */
+ protected function write(string $content, bool $decorated = true): void
+ {
+ parent::write($content, $decorated);
+ }
+
+ protected function describeInputArgument(InputArgument $argument, array $options = []): void
+ {
+ $this->write(
+ $argument->getName() ?: '
+ * ╔═══════════════╤══════════════════════════╤══════════════════╗
+ * 1 ISBN 2 Title │ Author ║
+ * ╠═══════════════╪══════════════════════════╪══════════════════╣
+ * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║
+ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║
+ * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║
+ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
+ * ╚═══════════════╧══════════════════════════╧══════════════════╝
+ *
+ *
+ * @return $this
+ */
+ public function setHorizontalBorderChars(string $outside, ?string $inside = null): static
+ {
+ $this->horizontalOutsideBorderChar = $outside;
+ $this->horizontalInsideBorderChar = $inside ?? $outside;
+
+ return $this;
+ }
+
+ /**
+ * Sets vertical border characters.
+ *
+ *
+ * ╔═══════════════╤══════════════════════════╤══════════════════╗
+ * ║ ISBN │ Title │ Author ║
+ * ╠═══════1═══════╪══════════════════════════╪══════════════════╣
+ * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║
+ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║
+ * ╟───────2───────┼──────────────────────────┼──────────────────╢
+ * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║
+ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
+ * ╚═══════════════╧══════════════════════════╧══════════════════╝
+ *
+ *
+ * @return $this
+ */
+ public function setVerticalBorderChars(string $outside, ?string $inside = null): static
+ {
+ $this->verticalOutsideBorderChar = $outside;
+ $this->verticalInsideBorderChar = $inside ?? $outside;
+
+ return $this;
+ }
+
+ /**
+ * Gets border characters.
+ *
+ * @internal
+ */
+ public function getBorderChars(): array
+ {
+ return [
+ $this->horizontalOutsideBorderChar,
+ $this->verticalOutsideBorderChar,
+ $this->horizontalInsideBorderChar,
+ $this->verticalInsideBorderChar,
+ ];
+ }
+
+ /**
+ * Sets crossing characters.
+ *
+ * Example:
+ *
+ * 1═══════════════2══════════════════════════2══════════════════3
+ * ║ ISBN │ Title │ Author ║
+ * 8'══════════════0'═════════════════════════0'═════════════════4'
+ * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║
+ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║
+ * 8───────────────0──────────────────────────0──────────────────4
+ * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║
+ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
+ * 7═══════════════6══════════════════════════6══════════════════5
+ *
+ *
+ * @param string $cross Crossing char (see #0 of example)
+ * @param string $topLeft Top left char (see #1 of example)
+ * @param string $topMid Top mid char (see #2 of example)
+ * @param string $topRight Top right char (see #3 of example)
+ * @param string $midRight Mid right char (see #4 of example)
+ * @param string $bottomRight Bottom right char (see #5 of example)
+ * @param string $bottomMid Bottom mid char (see #6 of example)
+ * @param string $bottomLeft Bottom left char (see #7 of example)
+ * @param string $midLeft Mid left char (see #8 of example)
+ * @param string|null $topLeftBottom Top left bottom char (see #8' of example), equals to $midLeft if null
+ * @param string|null $topMidBottom Top mid bottom char (see #0' of example), equals to $cross if null
+ * @param string|null $topRightBottom Top right bottom char (see #4' of example), equals to $midRight if null
+ *
+ * @return $this
+ */
+ public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, ?string $topLeftBottom = null, ?string $topMidBottom = null, ?string $topRightBottom = null): static
+ {
+ $this->crossingChar = $cross;
+ $this->crossingTopLeftChar = $topLeft;
+ $this->crossingTopMidChar = $topMid;
+ $this->crossingTopRightChar = $topRight;
+ $this->crossingMidRightChar = $midRight;
+ $this->crossingBottomRightChar = $bottomRight;
+ $this->crossingBottomMidChar = $bottomMid;
+ $this->crossingBottomLeftChar = $bottomLeft;
+ $this->crossingMidLeftChar = $midLeft;
+ $this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft;
+ $this->crossingTopMidBottomChar = $topMidBottom ?? $cross;
+ $this->crossingTopRightBottomChar = $topRightBottom ?? $midRight;
+
+ return $this;
+ }
+
+ /**
+ * Sets default crossing character used for each cross.
+ *
+ * @see {@link setCrossingChars()} for setting each crossing individually.
+ */
+ public function setDefaultCrossingChar(string $char): self
+ {
+ return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char);
+ }
+
+ /**
+ * Gets crossing character.
+ */
+ public function getCrossingChar(): string
+ {
+ return $this->crossingChar;
+ }
+
+ /**
+ * Gets crossing characters.
+ *
+ * @internal
+ */
+ public function getCrossingChars(): array
+ {
+ return [
+ $this->crossingChar,
+ $this->crossingTopLeftChar,
+ $this->crossingTopMidChar,
+ $this->crossingTopRightChar,
+ $this->crossingMidRightChar,
+ $this->crossingBottomRightChar,
+ $this->crossingBottomMidChar,
+ $this->crossingBottomLeftChar,
+ $this->crossingMidLeftChar,
+ $this->crossingTopLeftBottomChar,
+ $this->crossingTopMidBottomChar,
+ $this->crossingTopRightBottomChar,
+ ];
+ }
+
+ /**
+ * Sets header cell format.
+ *
+ * @return $this
+ */
+ public function setCellHeaderFormat(string $cellHeaderFormat): static
+ {
+ $this->cellHeaderFormat = $cellHeaderFormat;
+
+ return $this;
+ }
+
+ /**
+ * Gets header cell format.
+ */
+ public function getCellHeaderFormat(): string
+ {
+ return $this->cellHeaderFormat;
+ }
+
+ /**
+ * Sets row cell format.
+ *
+ * @return $this
+ */
+ public function setCellRowFormat(string $cellRowFormat): static
+ {
+ $this->cellRowFormat = $cellRowFormat;
+
+ return $this;
+ }
+
+ /**
+ * Gets row cell format.
+ */
+ public function getCellRowFormat(): string
+ {
+ return $this->cellRowFormat;
+ }
+
+ /**
+ * Sets row cell content format.
+ *
+ * @return $this
+ */
+ public function setCellRowContentFormat(string $cellRowContentFormat): static
+ {
+ $this->cellRowContentFormat = $cellRowContentFormat;
+
+ return $this;
+ }
+
+ /**
+ * Gets row cell content format.
+ */
+ public function getCellRowContentFormat(): string
+ {
+ return $this->cellRowContentFormat;
+ }
+
+ /**
+ * Sets table border format.
+ *
+ * @return $this
+ */
+ public function setBorderFormat(string $borderFormat): static
+ {
+ $this->borderFormat = $borderFormat;
+
+ return $this;
+ }
+
+ /**
+ * Gets table border format.
+ */
+ public function getBorderFormat(): string
+ {
+ return $this->borderFormat;
+ }
+
+ /**
+ * Sets cell padding type.
+ *
+ * @return $this
+ */
+ public function setPadType(int $padType): static
+ {
+ if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) {
+ throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).');
+ }
+
+ $this->padType = $padType;
+
+ return $this;
+ }
+
+ /**
+ * Gets cell padding type.
+ */
+ public function getPadType(): int
+ {
+ return $this->padType;
+ }
+
+ public function getHeaderTitleFormat(): string
+ {
+ return $this->headerTitleFormat;
+ }
+
+ /**
+ * @return $this
+ */
+ public function setHeaderTitleFormat(string $format): static
+ {
+ $this->headerTitleFormat = $format;
+
+ return $this;
+ }
+
+ public function getFooterTitleFormat(): string
+ {
+ return $this->footerTitleFormat;
+ }
+
+ /**
+ * @return $this
+ */
+ public function setFooterTitleFormat(string $format): static
+ {
+ $this->footerTitleFormat = $format;
+
+ return $this;
+ }
+}
diff --git a/assets/opencc/vendor/symfony/console/Input/ArgvInput.php b/assets/opencc/vendor/symfony/console/Input/ArgvInput.php
new file mode 100644
index 0000000..ab9f28c
--- /dev/null
+++ b/assets/opencc/vendor/symfony/console/Input/ArgvInput.php
@@ -0,0 +1,370 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Input;
+
+use Symfony\Component\Console\Exception\RuntimeException;
+
+/**
+ * ArgvInput represents an input coming from the CLI arguments.
+ *
+ * Usage:
+ *
+ * $input = new ArgvInput();
+ *
+ * By default, the `$_SERVER['argv']` array is used for the input values.
+ *
+ * This can be overridden by explicitly passing the input values in the constructor:
+ *
+ * $input = new ArgvInput($_SERVER['argv']);
+ *
+ * If you pass it yourself, don't forget that the first element of the array
+ * is the name of the running application.
+ *
+ * When passing an argument to the constructor, be sure that it respects
+ * the same rules as the argv one. It's almost always better to use the
+ * `StringInput` when you want to provide your own input.
+ *
+ * @author Fabien Potencier