修改makefile

This commit is contained in:
gfdgd xi 2023-05-12 21:47:14 +08:00
parent 201328afea
commit 9785ad98fc
267 changed files with 5 additions and 30283 deletions

View File

@ -12,6 +12,7 @@ package:
#cd VM-source && make
#cd wine && make
make clean -j$(nproc)
mkdir deb/opt/apps/deepin-wine-runner/LANG -pv
cp -rv helperset deb/opt/apps/deepin-wine-runner/
#cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM
@ -112,7 +113,10 @@ package:
cp -rv InstallRuntime deb/opt/apps/deepin-wine-runner
python3 UpdateTime.py
python3 RemovePycacheFile.py
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder/
cp -rv deb /tmp/spark-deepin-wine-runner-builder
rm -rfv deb/opt/apps/deepin-wine-runner/*
rm -rfv package-script.zip
mkdir -pv /tmp/spark-deepin-wine-runner-builder/usr/bin
ln -s /opt/apps/deepin-wine-runner/deepin-wine-packager.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-package-builder
ln -s /opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-packager-easy-builder

View File

@ -18,7 +18,6 @@ Description: gfdgd xi 制作的 wine 运行器
3.2.2 更新内容:
※1. 修改源地址,脱离 Gitlink
※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题。
3.2.1 更新内容:
※1、Windows 虚拟机安装工具支持非 X86 架构;
※2、应用打包器可以与星火应用商店配合构建 arm/all 全架构的 Wine 包;

View File

@ -1 +0,0 @@
.sass-cache/

View File

@ -1,19 +0,0 @@
{
"esnext": true,
"indent": 2,
"maxlen": 80,
"freeze": true,
"camelcase": true,
"unused": true,
"eqnull": true,
"proto": true,
"supernew": true,
"noyield": true,
"evil": true,
"node": true,
"boss": true,
"expr": true,
"loopfunc": true,
"white": true,
"maxdepth": 4
}

View File

@ -1,33 +0,0 @@
# Contributing
Changes and improvements are more than welcome! Feel free to fork and open a pull request.
Please follow the house rules to have a bigger chance of your contribution being merged.
## House rules
### How to make changes
- To make changes, create a new branch based on `master` (do not create one from `gh-pages` unless strictly necessary) and make them there, then create a Pull Request to master.
`gh-pages` is different from master in that it contains sharing features, analytics and other things that have no direct bearing with the game. `master` is the "pure" version of the game.
- If you want to modify the CSS, please edit the SCSS files present in `style/`: `main.scss` and others. Don't edit the `main.css`, because it's supposed to be generated.
In order to compile your SCSS modifications, you need to use the `sass` gem (install it by running `gem install sass` once Ruby is installed).
To run SASS, simply use the following command:
`sass --unix-newlines --watch style/main.scss`
SASS will automatically recompile your css when changed.
- `Rakefile` contains some tasks that help during development. Feel free to add useful tasks if needed.
- Please use 2-space indentation when editing the JavaScript. A `.jshintrc` file is present, which will help your code to follow the guidelines if you install and run `jshint`.
- Please test your modification thoroughly before submitting your Pull Request.
### Changes that might not be accepted
We have to be conservative with the core game. This means that some modifications won't be merged, or will have to be evaluated carefully before being merged:
- Undo/redo features
- Save/reload features
- Changes to how the tiles look or their contents
- Changes to the layout
- Changes to the grid size
### Changes that are welcome
- Bug fixes
- Compatibility improvements
- "Under the hood" enhancements
- Small changes that don't have an impact on the core gameplay

View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2014 Gabriele Cirulli
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.

View File

@ -1,38 +0,0 @@
# 2048
A small clone of [1024](https://play.google.com/store/apps/details?id=com.veewo.a1024), based on [Saming's 2048](http://saming.fr/p/2048/) (also a clone).
Made just for fun. [Play it here!](http://gabrielecirulli.github.io/2048/)
The official app can also be found on the [Play Store](https://play.google.com/store/apps/details?id=com.gabrielecirulli.app2048) and [App Store!](https://itunes.apple.com/us/app/2048-by-gabriele-cirulli/id868076805)
### Contributions
[Anna Harren](https://github.com/iirelu/) and [sigod](https://github.com/sigod) are maintainers for this repository.
Other notable contributors:
- [TimPetricola](https://github.com/TimPetricola) added best score storage
- [chrisprice](https://github.com/chrisprice) added custom code for swipe handling on mobile
- [marcingajda](https://github.com/marcingajda) made swipes work on Windows Phone
- [mgarciaisaia](https://github.com/mgarciaisaia) added support for Android 2.3
Many thanks to [rayhaanj](https://github.com/rayhaanj), [Mechazawa](https://github.com/Mechazawa), [grant](https://github.com/grant), [remram44](https://github.com/remram44) and [ghoullier](https://github.com/ghoullier) for the many other good contributions.
### Screenshot
<p align="center">
<img src="https://cloud.githubusercontent.com/assets/1175750/8614312/280e5dc2-26f1-11e5-9f1f-5891c3ca8b26.png" alt="Screenshot"/>
</p>
That screenshot is fake, by the way. I never reached 2048 :smile:
## Contributing
Changes and improvements are more than welcome! Feel free to fork and open a pull request. Please make your changes in a specific branch and request to pull into `master`! If you can, please make sure the game fully works before sending the PR, as that will help speed up the process.
You can find the same information in the [contributing guide.](https://github.com/gabrielecirulli/2048/blob/master/CONTRIBUTING.md)
## License
2048 is licensed under the [MIT license.](https://github.com/gabrielecirulli/2048/blob/master/LICENSE.txt)
## Donations
I made this in my spare time, and it's hosted on GitHub (which means I don't have any hosting costs), but if you enjoyed the game and feel like buying me coffee, you can donate at my BTC address: `1Ec6onfsQmoP9kkL3zkpB6c5sA4PVcXU2i`. Thank you very much!

View File

@ -1,11 +0,0 @@
require "date"
namespace :appcache do
desc "update the date in the appcache file (in the gh-pages branch)"
task :update do
appcache = File.read("cache.appcache")
updated = "# Updated: #{DateTime.now}"
File.write("cache.appcache", appcache.sub(/^# Updated:.*$/, updated))
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,99 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>2048</title>
<link href="style/main.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="favicon.ico">
<link rel="apple-touch-icon" href="meta/apple-touch-icon.png">
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone 5+ -->
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x920.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone, retina -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1, user-scalable=no, minimal-ui">
</head>
<body>
<div class="container">
<div class="heading">
<h1 class="title">2048</h1>
<div class="scores-container">
<div class="score-container">0</div>
<div class="best-container">0</div>
</div>
</div>
<div class="above-game">
<p class="game-intro">Join the numbers and get to the <strong>2048 tile!</strong></p>
<a class="restart-button">New Game</a>
</div>
<div class="game-container">
<div class="game-message">
<p></p>
<div class="lower">
<a class="keep-playing-button">Keep going</a>
<a class="retry-button">Try again</a>
</div>
</div>
<div class="grid-container">
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
</div>
<div class="tile-container">
</div>
</div>
<p class="game-explanation">
<strong class="important">How to play:</strong> Use your <strong>arrow keys</strong> to move the tiles. When two tiles with the same number touch, they <strong>merge into one!</strong>
</p>
<hr>
<p>
<strong class="important">Note:</strong> This site is the official version of 2048. You can play it on your phone via <a href="http://git.io/2048">http://git.io/2048.</a> All other apps or sites are derivatives or fakes, and should be used with caution.
</p>
<hr>
<p>
Created by <a href="http://gabrielecirulli.com" target="_blank">Gabriele Cirulli.</a> Based on <a href="https://itunes.apple.com/us/app/1024!/id823499224" target="_blank">1024 by Veewo Studio</a> and conceptually similar to <a href="http://asherv.com/threes/" target="_blank">Threes by Asher Vollmer.</a>
</p>
</div>
<script src="js/bind_polyfill.js"></script>
<script src="js/classlist_polyfill.js"></script>
<script src="js/animframe_polyfill.js"></script>
<script src="js/keyboard_input_manager.js"></script>
<script src="js/html_actuator.js"></script>
<script src="js/grid.js"></script>
<script src="js/tile.js"></script>
<script src="js/local_storage_manager.js"></script>
<script src="js/game_manager.js"></script>
<script src="js/application.js"></script>
</body>
</html>

View File

@ -1,28 +0,0 @@
(function () {
var lastTime = 0;
var vendors = ['webkit', 'moz'];
for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
window[vendors[x] + 'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = function (callback) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function () {
callback(currTime + timeToCall);
},
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
}
if (!window.cancelAnimationFrame) {
window.cancelAnimationFrame = function (id) {
clearTimeout(id);
};
}
}());

View File

@ -1,4 +0,0 @@
// Wait till the browser is ready to render the game (avoids glitches)
window.requestAnimationFrame(function () {
new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
});

View File

@ -1,9 +0,0 @@
Function.prototype.bind = Function.prototype.bind || function (target) {
var self = this;
return function (args) {
if (!(args instanceof Array)) {
args = [args];
}
self.apply(target, args);
};
};

View File

@ -1,71 +0,0 @@
(function () {
if (typeof window.Element === "undefined" ||
"classList" in document.documentElement) {
return;
}
var prototype = Array.prototype,
push = prototype.push,
splice = prototype.splice,
join = prototype.join;
function DOMTokenList(el) {
this.el = el;
// The className needs to be trimmed and split on whitespace
// to retrieve a list of classes.
var classes = el.className.replace(/^\s+|\s+$/g, '').split(/\s+/);
for (var i = 0; i < classes.length; i++) {
push.call(this, classes[i]);
}
}
DOMTokenList.prototype = {
add: function (token) {
if (this.contains(token)) return;
push.call(this, token);
this.el.className = this.toString();
},
contains: function (token) {
return this.el.className.indexOf(token) != -1;
},
item: function (index) {
return this[index] || null;
},
remove: function (token) {
if (!this.contains(token)) return;
for (var i = 0; i < this.length; i++) {
if (this[i] == token) break;
}
splice.call(this, i, 1);
this.el.className = this.toString();
},
toString: function () {
return join.call(this, ' ');
},
toggle: function (token) {
if (!this.contains(token)) {
this.add(token);
} else {
this.remove(token);
}
return this.contains(token);
}
};
window.DOMTokenList = DOMTokenList;
function defineElementGetter(obj, prop, getter) {
if (Object.defineProperty) {
Object.defineProperty(obj, prop, {
get: getter
});
} else {
obj.__defineGetter__(prop, getter);
}
}
defineElementGetter(HTMLElement.prototype, 'classList', function () {
return new DOMTokenList(this);
});
})();

View File

@ -1,272 +0,0 @@
function GameManager(size, InputManager, Actuator, StorageManager) {
this.size = size; // Size of the grid
this.inputManager = new InputManager;
this.storageManager = new StorageManager;
this.actuator = new Actuator;
this.startTiles = 2;
this.inputManager.on("move", this.move.bind(this));
this.inputManager.on("restart", this.restart.bind(this));
this.inputManager.on("keepPlaying", this.keepPlaying.bind(this));
this.setup();
}
// Restart the game
GameManager.prototype.restart = function () {
this.storageManager.clearGameState();
this.actuator.continueGame(); // Clear the game won/lost message
this.setup();
};
// Keep playing after winning (allows going over 2048)
GameManager.prototype.keepPlaying = function () {
this.keepPlaying = true;
this.actuator.continueGame(); // Clear the game won/lost message
};
// Return true if the game is lost, or has won and the user hasn't kept playing
GameManager.prototype.isGameTerminated = function () {
return this.over || (this.won && !this.keepPlaying);
};
// Set up the game
GameManager.prototype.setup = function () {
var previousState = this.storageManager.getGameState();
// Reload the game from a previous game if present
if (previousState) {
this.grid = new Grid(previousState.grid.size,
previousState.grid.cells); // Reload grid
this.score = previousState.score;
this.over = previousState.over;
this.won = previousState.won;
this.keepPlaying = previousState.keepPlaying;
} else {
this.grid = new Grid(this.size);
this.score = 0;
this.over = false;
this.won = false;
this.keepPlaying = false;
// Add the initial tiles
this.addStartTiles();
}
// Update the actuator
this.actuate();
};
// Set up the initial tiles to start the game with
GameManager.prototype.addStartTiles = function () {
for (var i = 0; i < this.startTiles; i++) {
this.addRandomTile();
}
};
// Adds a tile in a random position
GameManager.prototype.addRandomTile = function () {
if (this.grid.cellsAvailable()) {
var value = Math.random() < 0.9 ? 2 : 4;
var tile = new Tile(this.grid.randomAvailableCell(), value);
this.grid.insertTile(tile);
}
};
// Sends the updated grid to the actuator
GameManager.prototype.actuate = function () {
if (this.storageManager.getBestScore() < this.score) {
this.storageManager.setBestScore(this.score);
}
// Clear the state when the game is over (game over only, not win)
if (this.over) {
this.storageManager.clearGameState();
} else {
this.storageManager.setGameState(this.serialize());
}
this.actuator.actuate(this.grid, {
score: this.score,
over: this.over,
won: this.won,
bestScore: this.storageManager.getBestScore(),
terminated: this.isGameTerminated()
});
};
// Represent the current game as an object
GameManager.prototype.serialize = function () {
return {
grid: this.grid.serialize(),
score: this.score,
over: this.over,
won: this.won,
keepPlaying: this.keepPlaying
};
};
// Save all tile positions and remove merger info
GameManager.prototype.prepareTiles = function () {
this.grid.eachCell(function (x, y, tile) {
if (tile) {
tile.mergedFrom = null;
tile.savePosition();
}
});
};
// Move a tile and its representation
GameManager.prototype.moveTile = function (tile, cell) {
this.grid.cells[tile.x][tile.y] = null;
this.grid.cells[cell.x][cell.y] = tile;
tile.updatePosition(cell);
};
// Move tiles on the grid in the specified direction
GameManager.prototype.move = function (direction) {
// 0: up, 1: right, 2: down, 3: left
var self = this;
if (this.isGameTerminated()) return; // Don't do anything if the game's over
var cell, tile;
var vector = this.getVector(direction);
var traversals = this.buildTraversals(vector);
var moved = false;
// Save the current tile positions and remove merger information
this.prepareTiles();
// Traverse the grid in the right direction and move tiles
traversals.x.forEach(function (x) {
traversals.y.forEach(function (y) {
cell = { x: x, y: y };
tile = self.grid.cellContent(cell);
if (tile) {
var positions = self.findFarthestPosition(cell, vector);
var next = self.grid.cellContent(positions.next);
// Only one merger per row traversal?
if (next && next.value === tile.value && !next.mergedFrom) {
var merged = new Tile(positions.next, tile.value * 2);
merged.mergedFrom = [tile, next];
self.grid.insertTile(merged);
self.grid.removeTile(tile);
// Converge the two tiles' positions
tile.updatePosition(positions.next);
// Update the score
self.score += merged.value;
// The mighty 2048 tile
if (merged.value === 2048) self.won = true;
} else {
self.moveTile(tile, positions.farthest);
}
if (!self.positionsEqual(cell, tile)) {
moved = true; // The tile moved from its original cell!
}
}
});
});
if (moved) {
this.addRandomTile();
if (!this.movesAvailable()) {
this.over = true; // Game over!
}
this.actuate();
}
};
// Get the vector representing the chosen direction
GameManager.prototype.getVector = function (direction) {
// Vectors representing tile movement
var map = {
0: { x: 0, y: -1 }, // Up
1: { x: 1, y: 0 }, // Right
2: { x: 0, y: 1 }, // Down
3: { x: -1, y: 0 } // Left
};
return map[direction];
};
// Build a list of positions to traverse in the right order
GameManager.prototype.buildTraversals = function (vector) {
var traversals = { x: [], y: [] };
for (var pos = 0; pos < this.size; pos++) {
traversals.x.push(pos);
traversals.y.push(pos);
}
// Always traverse from the farthest cell in the chosen direction
if (vector.x === 1) traversals.x = traversals.x.reverse();
if (vector.y === 1) traversals.y = traversals.y.reverse();
return traversals;
};
GameManager.prototype.findFarthestPosition = function (cell, vector) {
var previous;
// Progress towards the vector direction until an obstacle is found
do {
previous = cell;
cell = { x: previous.x + vector.x, y: previous.y + vector.y };
} while (this.grid.withinBounds(cell) &&
this.grid.cellAvailable(cell));
return {
farthest: previous,
next: cell // Used to check if a merge is required
};
};
GameManager.prototype.movesAvailable = function () {
return this.grid.cellsAvailable() || this.tileMatchesAvailable();
};
// Check for available matches between tiles (more expensive check)
GameManager.prototype.tileMatchesAvailable = function () {
var self = this;
var tile;
for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) {
tile = this.grid.cellContent({ x: x, y: y });
if (tile) {
for (var direction = 0; direction < 4; direction++) {
var vector = self.getVector(direction);
var cell = { x: x + vector.x, y: y + vector.y };
var other = self.grid.cellContent(cell);
if (other && other.value === tile.value) {
return true; // These two tiles can be merged
}
}
}
}
}
return false;
};
GameManager.prototype.positionsEqual = function (first, second) {
return first.x === second.x && first.y === second.y;
};

View File

@ -1,117 +0,0 @@
function Grid(size, previousState) {
this.size = size;
this.cells = previousState ? this.fromState(previousState) : this.empty();
}
// Build a grid of the specified size
Grid.prototype.empty = function () {
var cells = [];
for (var x = 0; x < this.size; x++) {
var row = cells[x] = [];
for (var y = 0; y < this.size; y++) {
row.push(null);
}
}
return cells;
};
Grid.prototype.fromState = function (state) {
var cells = [];
for (var x = 0; x < this.size; x++) {
var row = cells[x] = [];
for (var y = 0; y < this.size; y++) {
var tile = state[x][y];
row.push(tile ? new Tile(tile.position, tile.value) : null);
}
}
return cells;
};
// Find the first available random position
Grid.prototype.randomAvailableCell = function () {
var cells = this.availableCells();
if (cells.length) {
return cells[Math.floor(Math.random() * cells.length)];
}
};
Grid.prototype.availableCells = function () {
var cells = [];
this.eachCell(function (x, y, tile) {
if (!tile) {
cells.push({ x: x, y: y });
}
});
return cells;
};
// Call callback for every cell
Grid.prototype.eachCell = function (callback) {
for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) {
callback(x, y, this.cells[x][y]);
}
}
};
// Check if there are any cells available
Grid.prototype.cellsAvailable = function () {
return !!this.availableCells().length;
};
// Check if the specified cell is taken
Grid.prototype.cellAvailable = function (cell) {
return !this.cellOccupied(cell);
};
Grid.prototype.cellOccupied = function (cell) {
return !!this.cellContent(cell);
};
Grid.prototype.cellContent = function (cell) {
if (this.withinBounds(cell)) {
return this.cells[cell.x][cell.y];
} else {
return null;
}
};
// Inserts a tile at its position
Grid.prototype.insertTile = function (tile) {
this.cells[tile.x][tile.y] = tile;
};
Grid.prototype.removeTile = function (tile) {
this.cells[tile.x][tile.y] = null;
};
Grid.prototype.withinBounds = function (position) {
return position.x >= 0 && position.x < this.size &&
position.y >= 0 && position.y < this.size;
};
Grid.prototype.serialize = function () {
var cellState = [];
for (var x = 0; x < this.size; x++) {
var row = cellState[x] = [];
for (var y = 0; y < this.size; y++) {
row.push(this.cells[x][y] ? this.cells[x][y].serialize() : null);
}
}
return {
size: this.size,
cells: cellState
};
};

View File

@ -1,139 +0,0 @@
function HTMLActuator() {
this.tileContainer = document.querySelector(".tile-container");
this.scoreContainer = document.querySelector(".score-container");
this.bestContainer = document.querySelector(".best-container");
this.messageContainer = document.querySelector(".game-message");
this.score = 0;
}
HTMLActuator.prototype.actuate = function (grid, metadata) {
var self = this;
window.requestAnimationFrame(function () {
self.clearContainer(self.tileContainer);
grid.cells.forEach(function (column) {
column.forEach(function (cell) {
if (cell) {
self.addTile(cell);
}
});
});
self.updateScore(metadata.score);
self.updateBestScore(metadata.bestScore);
if (metadata.terminated) {
if (metadata.over) {
self.message(false); // You lose
} else if (metadata.won) {
self.message(true); // You win!
}
}
});
};
// Continues the game (both restart and keep playing)
HTMLActuator.prototype.continueGame = function () {
this.clearMessage();
};
HTMLActuator.prototype.clearContainer = function (container) {
while (container.firstChild) {
container.removeChild(container.firstChild);
}
};
HTMLActuator.prototype.addTile = function (tile) {
var self = this;
var wrapper = document.createElement("div");
var inner = document.createElement("div");
var position = tile.previousPosition || { x: tile.x, y: tile.y };
var positionClass = this.positionClass(position);
// We can't use classlist because it somehow glitches when replacing classes
var classes = ["tile", "tile-" + tile.value, positionClass];
if (tile.value > 2048) classes.push("tile-super");
this.applyClasses(wrapper, classes);
inner.classList.add("tile-inner");
inner.textContent = tile.value;
if (tile.previousPosition) {
// Make sure that the tile gets rendered in the previous position first
window.requestAnimationFrame(function () {
classes[2] = self.positionClass({ x: tile.x, y: tile.y });
self.applyClasses(wrapper, classes); // Update the position
});
} else if (tile.mergedFrom) {
classes.push("tile-merged");
this.applyClasses(wrapper, classes);
// Render the tiles that merged
tile.mergedFrom.forEach(function (merged) {
self.addTile(merged);
});
} else {
classes.push("tile-new");
this.applyClasses(wrapper, classes);
}
// Add the inner part of the tile to the wrapper
wrapper.appendChild(inner);
// Put the tile on the board
this.tileContainer.appendChild(wrapper);
};
HTMLActuator.prototype.applyClasses = function (element, classes) {
element.setAttribute("class", classes.join(" "));
};
HTMLActuator.prototype.normalizePosition = function (position) {
return { x: position.x + 1, y: position.y + 1 };
};
HTMLActuator.prototype.positionClass = function (position) {
position = this.normalizePosition(position);
return "tile-position-" + position.x + "-" + position.y;
};
HTMLActuator.prototype.updateScore = function (score) {
this.clearContainer(this.scoreContainer);
var difference = score - this.score;
this.score = score;
this.scoreContainer.textContent = this.score;
if (difference > 0) {
var addition = document.createElement("div");
addition.classList.add("score-addition");
addition.textContent = "+" + difference;
this.scoreContainer.appendChild(addition);
}
};
HTMLActuator.prototype.updateBestScore = function (bestScore) {
this.bestContainer.textContent = bestScore;
};
HTMLActuator.prototype.message = function (won) {
var type = won ? "game-won" : "game-over";
var message = won ? "You win!" : "Game over!";
this.messageContainer.classList.add(type);
this.messageContainer.getElementsByTagName("p")[0].textContent = message;
};
HTMLActuator.prototype.clearMessage = function () {
// IE only takes one value to remove at a time.
this.messageContainer.classList.remove("game-won");
this.messageContainer.classList.remove("game-over");
};

View File

@ -1,144 +0,0 @@
function KeyboardInputManager() {
this.events = {};
if (window.navigator.msPointerEnabled) {
//Internet Explorer 10 style
this.eventTouchstart = "MSPointerDown";
this.eventTouchmove = "MSPointerMove";
this.eventTouchend = "MSPointerUp";
} else {
this.eventTouchstart = "touchstart";
this.eventTouchmove = "touchmove";
this.eventTouchend = "touchend";
}
this.listen();
}
KeyboardInputManager.prototype.on = function (event, callback) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(callback);
};
KeyboardInputManager.prototype.emit = function (event, data) {
var callbacks = this.events[event];
if (callbacks) {
callbacks.forEach(function (callback) {
callback(data);
});
}
};
KeyboardInputManager.prototype.listen = function () {
var self = this;
var map = {
38: 0, // Up
39: 1, // Right
40: 2, // Down
37: 3, // Left
75: 0, // Vim up
76: 1, // Vim right
74: 2, // Vim down
72: 3, // Vim left
87: 0, // W
68: 1, // D
83: 2, // S
65: 3 // A
};
// Respond to direction keys
document.addEventListener("keydown", function (event) {
var modifiers = event.altKey || event.ctrlKey || event.metaKey ||
event.shiftKey;
var mapped = map[event.which];
if (!modifiers) {
if (mapped !== undefined) {
event.preventDefault();
self.emit("move", mapped);
}
}
// R key restarts the game
if (!modifiers && event.which === 82) {
self.restart.call(self, event);
}
});
// Respond to button presses
this.bindButtonPress(".retry-button", this.restart);
this.bindButtonPress(".restart-button", this.restart);
this.bindButtonPress(".keep-playing-button", this.keepPlaying);
// Respond to swipe events
var touchStartClientX, touchStartClientY;
var gameContainer = document.getElementsByClassName("game-container")[0];
gameContainer.addEventListener(this.eventTouchstart, function (event) {
if ((!window.navigator.msPointerEnabled && event.touches.length > 1) ||
event.targetTouches.length > 1) {
return; // Ignore if touching with more than 1 finger
}
if (window.navigator.msPointerEnabled) {
touchStartClientX = event.pageX;
touchStartClientY = event.pageY;
} else {
touchStartClientX = event.touches[0].clientX;
touchStartClientY = event.touches[0].clientY;
}
event.preventDefault();
});
gameContainer.addEventListener(this.eventTouchmove, function (event) {
event.preventDefault();
});
gameContainer.addEventListener(this.eventTouchend, function (event) {
if ((!window.navigator.msPointerEnabled && event.touches.length > 0) ||
event.targetTouches.length > 0) {
return; // Ignore if still touching with one or more fingers
}
var touchEndClientX, touchEndClientY;
if (window.navigator.msPointerEnabled) {
touchEndClientX = event.pageX;
touchEndClientY = event.pageY;
} else {
touchEndClientX = event.changedTouches[0].clientX;
touchEndClientY = event.changedTouches[0].clientY;
}
var dx = touchEndClientX - touchStartClientX;
var absDx = Math.abs(dx);
var dy = touchEndClientY - touchStartClientY;
var absDy = Math.abs(dy);
if (Math.max(absDx, absDy) > 10) {
// (right : left) : (down : up)
self.emit("move", absDx > absDy ? (dx > 0 ? 1 : 3) : (dy > 0 ? 2 : 0));
}
});
};
KeyboardInputManager.prototype.restart = function (event) {
event.preventDefault();
this.emit("restart");
};
KeyboardInputManager.prototype.keepPlaying = function (event) {
event.preventDefault();
this.emit("keepPlaying");
};
KeyboardInputManager.prototype.bindButtonPress = function (selector, fn) {
var button = document.querySelector(selector);
button.addEventListener("click", fn.bind(this));
button.addEventListener(this.eventTouchend, fn.bind(this));
};

View File

@ -1,63 +0,0 @@
window.fakeStorage = {
_data: {},
setItem: function (id, val) {
return this._data[id] = String(val);
},
getItem: function (id) {
return this._data.hasOwnProperty(id) ? this._data[id] : undefined;
},
removeItem: function (id) {
return delete this._data[id];
},
clear: function () {
return this._data = {};
}
};
function LocalStorageManager() {
this.bestScoreKey = "bestScore";
this.gameStateKey = "gameState";
var supported = this.localStorageSupported();
this.storage = supported ? window.localStorage : window.fakeStorage;
}
LocalStorageManager.prototype.localStorageSupported = function () {
var testKey = "test";
try {
var storage = window.localStorage;
storage.setItem(testKey, "1");
storage.removeItem(testKey);
return true;
} catch (error) {
return false;
}
};
// Best score getters/setters
LocalStorageManager.prototype.getBestScore = function () {
return this.storage.getItem(this.bestScoreKey) || 0;
};
LocalStorageManager.prototype.setBestScore = function (score) {
this.storage.setItem(this.bestScoreKey, score);
};
// Game state getters/setters and clearing
LocalStorageManager.prototype.getGameState = function () {
var stateJSON = this.storage.getItem(this.gameStateKey);
return stateJSON ? JSON.parse(stateJSON) : null;
};
LocalStorageManager.prototype.setGameState = function (gameState) {
this.storage.setItem(this.gameStateKey, JSON.stringify(gameState));
};
LocalStorageManager.prototype.clearGameState = function () {
this.storage.removeItem(this.gameStateKey);
};

View File

@ -1,27 +0,0 @@
function Tile(position, value) {
this.x = position.x;
this.y = position.y;
this.value = value || 2;
this.previousPosition = null;
this.mergedFrom = null; // Tracks tiles that merged together
}
Tile.prototype.savePosition = function () {
this.previousPosition = { x: this.x, y: this.y };
};
Tile.prototype.updatePosition = function (position) {
this.x = position.x;
this.y = position.y;
};
Tile.prototype.serialize = function () {
return {
position: {
x: this.x,
y: this.y
},
value: this.value
};
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,640 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="clear_sansbold" horiz-adv-x="1217" >
<font-face units-per-em="2048" ascent="1489" descent="-559" />
<missing-glyph horiz-adv-x="492" />
<glyph unicode="&#xfb01;" horiz-adv-x="1208" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM790 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34 t-29.5 97zM804 0v1049h258v-1049h-258z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1208" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM804 0v1489h258v-1489h-258z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1868" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM694 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5 t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM1450 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97zM1464 0v1049h258v-1049h-258z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1868" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM694 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5 t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM1464 0v1489h258v-1489h-258z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="492" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="492" />
<glyph unicode="&#x09;" horiz-adv-x="492" />
<glyph unicode="&#xa0;" horiz-adv-x="492" />
<glyph unicode="!" horiz-adv-x="584" d="M129 139q0 82 36 118t126 36q92 0 128 -35t36 -119q0 -86 -39 -119.5t-125 -33.5q-94 0 -128 37.5t-34 115.5zM152 1384h280l-31 -944h-215z" />
<glyph unicode="&#x22;" horiz-adv-x="977" d="M137 1384h275l-45 -612h-185zM565 1384h275l-45 -612h-185z" />
<glyph unicode="#" horiz-adv-x="1405" d="M72 383v180h280l70 258h-234v180h283l104 385h193l-104 -385h247l105 385h192l-104 -385h229v-180h-278l-70 -258h232v-180h-279l-104 -383h-193l104 383h-247l-105 -383h-192l104 383h-233zM545 563h248l69 258h-248z" />
<glyph unicode="$" horiz-adv-x="1280" d="M123 291l205 139q37 -49 99 -94t134 -53v315q-164 41 -246.5 86.5t-125 112.5t-42.5 159q0 160 111 247t303 104v106h180v-106q144 -11 247.5 -69t162.5 -155l-193 -137q-34 47 -90.5 87t-126.5 50v-280q191 -50 269 -96t118.5 -112.5t40.5 -164.5q0 -166 -111.5 -258 t-316.5 -109v-196h-180v192q-310 32 -438 232zM414 971q0 -39 30.5 -68t116.5 -53v237q-65 -4 -106 -32.5t-41 -83.5zM741 281q74 8 118 41.5t44 85.5q0 51 -34.5 83.5t-127.5 61.5v-272z" />
<glyph unicode="%" horiz-adv-x="2163" d="M88 963q0 221 101.5 335.5t289.5 114.5q192 0 292.5 -116t100.5 -334q0 -216 -101 -330.5t-292 -114.5q-185 0 -288 114.5t-103 330.5zM334 963q0 -152 37 -208.5t108 -56.5q80 0 114 63.5t34 201.5q0 136 -32 203t-116 67q-78 0 -111.5 -64.5t-33.5 -205.5zM590 -51 l747 1487h238l-750 -1487h-235zM1290 414q0 219 100 334.5t291 115.5q193 0 293.5 -116t100.5 -334q0 -216 -102.5 -330.5t-291.5 -114.5q-185 0 -288 114.5t-103 330.5zM1536 414q0 -152 37 -208t108 -56q81 0 114.5 63.5t33.5 200.5q0 97 -16 158t-45 86.5t-87 25.5 q-78 0 -111.5 -64.5t-33.5 -205.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1417" d="M92 373q0 131 57.5 217t231.5 194q-59 72 -101 148t-42 153q0 160 106 244t303 84q165 0 271 -74t106 -209q0 -72 -31 -136t-85 -120t-165 -129l263 -309q64 87 102 230l227 -52q-51 -211 -176 -356l217 -258h-327l-72 86q-72 -49 -158 -82t-215 -33q-237 0 -374.5 109 t-137.5 293zM358 371q0 -90 67 -140.5t183 -50.5q129 0 226 76l-308 356q-94 -59 -131 -114.5t-37 -126.5zM500 1096q0 -41 23.5 -81t70.5 -93q65 43 103.5 77.5t52.5 61t14 67.5t-34 68t-89 27q-70 0 -105.5 -34t-35.5 -93z" />
<glyph unicode="'" horiz-adv-x="549" d="M137 1384h275l-45 -612h-185z" />
<glyph unicode="(" horiz-adv-x="856" d="M113 561q0 528 409 961h293q-217 -205 -337 -438.5t-120 -522.5t120 -520t337 -436h-293q-409 433 -409 956z" />
<glyph unicode=")" horiz-adv-x="856" d="M41 -395q217 205 337 436t120 520t-120 522.5t-337 438.5h293q409 -433 409 -961q0 -523 -409 -956h-293z" />
<glyph unicode="*" horiz-adv-x="911" d="M31 983l282 141l-282 146l90 149l258 -159l-10 260h174l-13 -260l261 159l90 -151l-283 -142l283 -143l-90 -149l-259 159l11 -260h-174l12 260l-260 -159z" />
<glyph unicode="+" horiz-adv-x="1427" d="M133 479v205h479v479h205v-479h477v-205h-477v-477h-205v477h-479z" />
<glyph unicode="," horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-177q41 69 72.5 151t36.5 132q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="-" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="." horiz-adv-x="584" d="M129 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="/" horiz-adv-x="1036" d="M-12 -299l690 1819h256l-692 -1819h-254z" />
<glyph unicode="0" horiz-adv-x="1280" d="M100 690q0 371 131 547t408 176q279 0 410 -175t131 -546q0 -373 -131 -548t-410 -175q-277 0 -408 175t-131 546zM391 690q0 -248 59.5 -363.5t188.5 -115.5t189.5 116.5t60.5 364.5t-60.5 363.5t-189.5 115.5t-188.5 -116.5t-59.5 -364.5z" />
<glyph unicode="1" horiz-adv-x="1280" d="M248 928v190q144 9 217.5 34.5t117 79.5t68.5 152h215v-1384h-282v928h-336z" />
<glyph unicode="2" horiz-adv-x="1204" d="M102 1178q85 127 201.5 181t290.5 54q214 0 337.5 -100t123.5 -281q0 -133 -48.5 -233.5t-138 -195t-223 -208.5t-164.5 -137h619v-258h-994v236q163 137 297 262t207 207.5t113.5 158t40.5 158.5q0 65 -49 103t-135 38q-93 0 -152 -43t-98 -102z" />
<glyph unicode="3" horiz-adv-x="1204" d="M66 195l227 155q37 -57 92 -92t150 -35q120 0 174.5 46t54.5 141q0 192 -254 192h-123v242h107q127 0 185 50t58 130q0 59 -42 98t-138 39t-153.5 -30.5t-98.5 -92.5l-225 158q82 111 198.5 164t299.5 53q139 0 242.5 -43.5t156.5 -120.5t53 -176q0 -271 -280 -340 q137 -9 221 -103.5t84 -240.5q0 -213 -139.5 -315.5t-383.5 -102.5q-174 0 -294.5 63.5t-171.5 160.5z" />
<glyph unicode="4" horiz-adv-x="1280" d="M63 229v260l676 895h289v-913h170v-242h-170v-229h-270v229h-695zM338 471h420v543z" />
<glyph unicode="5" horiz-adv-x="1204" d="M49 199l225 159q77 -135 261 -135q276 0 276 238q0 100 -72.5 157.5t-201.5 57.5q-138 0 -209 -74h-197l82 782h809v-258h-584l-28 -243q95 39 211 39q222 0 350.5 -119t128.5 -348q0 -226 -144.5 -355t-416.5 -129q-339 0 -490 228z" />
<glyph unicode="6" horiz-adv-x="1204" d="M100 608q0 392 147 598.5t429 206.5q267 0 395 -113l-160 -217q-49 43 -104 65.5t-131 22.5q-135 0 -196.5 -92t-78.5 -262q80 54 143.5 75t151.5 21q195 0 309.5 -119.5t114.5 -344.5q0 -222 -134 -350t-363 -128q-250 0 -386.5 165.5t-136.5 471.5zM393 598 q0 -153 23 -225t73 -116t136 -44q94 0 153.5 50t59.5 179q0 106 -59 169t-158 63q-78 0 -137.5 -25.5t-90.5 -50.5z" />
<glyph unicode="7" horiz-adv-x="1280" d="M113 1126v258h1038v-172l-520 -1212h-316l510 1126h-712z" />
<glyph unicode="8" horiz-adv-x="1204" d="M84 375q0 123 69.5 215t186.5 145q-112 55 -167.5 133.5t-55.5 169.5q0 183 128 279t357 96q223 0 353 -93t130 -280q0 -62 -29.5 -115t-76.5 -96t-143 -96q115 -56 170 -105t83.5 -112t28.5 -141q0 -192 -133.5 -298t-382.5 -106q-246 0 -382 101.5t-136 302.5zM367 373 q0 -78 56 -128t179 -50t178.5 52t55.5 128q0 86 -57.5 143t-176.5 113q-127 -56 -181 -113t-54 -145zM393 1042q0 -45 20 -76t66.5 -65.5t122.5 -64.5q117 51 162 100t45 100q0 66 -48 111t-159 45q-119 0 -164 -45t-45 -105z" />
<glyph unicode="9" horiz-adv-x="1204" d="M84 936q0 216 133.5 346.5t353.5 130.5q271 0 402 -169t131 -468q0 -386 -146.5 -595.5t-427.5 -209.5q-278 0 -413 115l157 215q101 -88 256 -88q233 0 273 354q-60 -41 -122.5 -68.5t-150.5 -27.5q-213 0 -329.5 120t-116.5 345zM365 942q0 -105 58.5 -168t160.5 -63 q78 0 137 25.5t90 49.5q0 211 -55.5 298t-180.5 87q-98 0 -154 -60.5t-56 -168.5z" />
<glyph unicode=":" horiz-adv-x="584" d="M129 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM129 889q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -123t-125 -37q-94 0 -128 41t-34 119z" />
<glyph unicode=";" horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-177q41 69 72.5 151t36.5 132q-66 4 -95.5 42t-29.5 113zM129 889q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -123t-125 -37q-94 0 -128 41t-34 119z" />
<glyph unicode="&#x3c;" horiz-adv-x="1427" d="M131 481v203l1163 479v-225l-866 -354l866 -355v-225z" />
<glyph unicode="=" horiz-adv-x="1427" d="M133 233v205h1161v-205h-1161zM133 725v205h1161v-205h-1161z" />
<glyph unicode="&#x3e;" horiz-adv-x="1427" d="M131 4v225l866 355l-866 354v225l1163 -479v-203z" />
<glyph unicode="?" horiz-adv-x="1071" d="M35 1165q69 123 184 185.5t291 62.5q238 0 363.5 -98.5t125.5 -276.5q0 -99 -40.5 -176t-114.5 -140t-240 -144v-179h-272v301q163 68 235 112t107 93t35 113q0 153 -197 153q-90 0 -144.5 -35.5t-99.5 -109.5zM309 139q0 82 36 118t126 36q92 0 128 -36t36 -118 q0 -86 -39 -119.5t-125 -33.5q-94 0 -128 37.5t-34 115.5z" />
<glyph unicode="@" horiz-adv-x="1950" d="M104 553q0 239 114 436.5t319 310.5t452 113q402 0 629 -223t227 -621q0 -169 -45 -292t-135.5 -192t-224.5 -69q-99 0 -164.5 27t-93.5 98q-141 -98 -283 -98q-127 0 -215 59t-134 166.5t-46 249.5q0 231 113 367.5t315 136.5q113 0 231 -70v41h215v-696q0 -66 22.5 -81 t51.5 -15q64 0 106 46t64.5 128t22.5 186q0 328 -168.5 499t-485.5 171q-195 0 -353 -88t-245.5 -244.5t-87.5 -347.5q0 -207 84.5 -361t238 -235.5t359.5 -81.5q123 0 228.5 9t220.5 36l39 -180q-190 -47 -490 -47q-260 0 -460 104.5t-310.5 302t-110.5 455.5zM725 520 q0 -143 55 -209.5t158 -66.5q89 0 223 92v422q-114 69 -198 69q-117 0 -177.5 -72.5t-60.5 -234.5z" />
<glyph unicode="A" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM477 528h373l-186 572z" />
<glyph unicode="B" horiz-adv-x="1298" d="M150 0v1384h489q266 0 381 -77.5t115 -245.5q0 -129 -62.5 -209t-195.5 -107q174 -24 253.5 -110t79.5 -234q0 -208 -143 -304.5t-397 -96.5h-520zM432 250h143q165 0 227.5 16t91 54t28.5 106q0 93 -63 131.5t-236 38.5h-191v-346zM432 842h172q125 0 185.5 35t60.5 122 q0 79 -58 109.5t-180 30.5h-180v-297z" />
<glyph unicode="C" horiz-adv-x="1333" d="M96 692q0 369 163 545t470 176q203 0 331 -68.5t195 -179.5l-219 -170q-48 72 -88 104t-91 48t-122 16q-170 0 -259 -108.5t-89 -362.5q0 -237 83.5 -354t266.5 -117q123 0 191.5 47t124.5 125l223 -164q-89 -133 -218.5 -195.5t-318.5 -62.5q-643 0 -643 721z" />
<glyph unicode="D" horiz-adv-x="1313" d="M137 0v1384h418q245 0 389.5 -71t213.5 -221.5t69 -399.5q0 -250 -69 -402t-208 -221t-391 -69h-422zM420 258h108q167 0 251.5 38.5t120.5 128.5t36 269q0 181 -35.5 268.5t-120.5 125.5t-252 38h-108v-868z" />
<glyph unicode="E" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899z" />
<glyph unicode="F" horiz-adv-x="1104" d="M150 0v1384h890v-258h-608v-299h510v-249h-510v-578h-282z" />
<glyph unicode="G" horiz-adv-x="1415" d="M96 680q0 733 645 733q188 0 328 -63t213 -185l-217 -170q-53 86 -129 127t-191 41q-189 0 -273.5 -121.5t-84.5 -361.5q0 -238 83.5 -348.5t268.5 -110.5q140 0 258 58v215h-270v249h553v-612q-96 -72 -238.5 -116t-293.5 -44q-324 0 -488 169t-164 540z" />
<glyph unicode="H" horiz-adv-x="1409" d="M150 0v1384h282v-538h545v538h283v-1384h-283v588h-545v-588h-282z" />
<glyph unicode="I" horiz-adv-x="872" d="M102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="J" horiz-adv-x="924" d="M20 23l86 251q32 -17 102.5 -36t110.5 -19q74 0 107 20t47 70t14 144v931h283v-1007q0 -219 -110.5 -313.5t-346.5 -94.5q-51 0 -142 15t-151 39z" />
<glyph unicode="K" horiz-adv-x="1280" d="M150 0v1384h282v-540l453 540h329l-516 -596l553 -788h-352l-383 578l-84 -97v-481h-282z" />
<glyph unicode="L" horiz-adv-x="1038" d="M150 0v1384h282v-1126h582v-258h-864z" />
<glyph unicode="M" horiz-adv-x="1667" d="M150 0v1384h325l361 -657l364 657h318v-1384h-273v930l-332 -578h-163l-328 578v-930h-272z" />
<glyph unicode="N" horiz-adv-x="1411" d="M150 0v1384h366l469 -933v933h277v-1384h-332l-504 989v-989h-276z" />
<glyph unicode="O" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5 t-69.5 -358.5z" />
<glyph unicode="P" horiz-adv-x="1239" d="M150 0v1384h520q235 0 363 -109.5t128 -354.5q0 -250 -117.5 -371t-381.5 -121h-230v-428h-282zM432 674h115q155 0 214.5 21.5t84 72.5t24.5 150q0 117 -64.5 169t-232.5 52h-141v-465z" />
<glyph unicode="Q" horiz-adv-x="1364" d="M86 692q0 346 144.5 533.5t453.5 187.5q307 0 450.5 -188.5t143.5 -532.5q0 -611 -428 -706q10 -54 43 -78.5t119 -24.5q45 0 104.5 9.5t100.5 21.5l65 -227q-34 -11 -118 -23t-160 -12q-399 0 -461 330q-213 32 -335 205t-122 505zM377 692q0 -246 69.5 -358.5 t237.5 -112.5t235.5 114t67.5 357q0 246 -69.5 358.5t-233.5 112.5q-170 0 -238.5 -112.5t-68.5 -358.5z" />
<glyph unicode="R" horiz-adv-x="1284" d="M150 0v1384h503q267 0 390.5 -96t123.5 -315q0 -177 -74.5 -282t-211.5 -134l370 -557h-323l-353 524h-143v-524h-282zM432 770h207q95 0 146 18t73.5 56t22.5 117q0 106 -53.5 142t-176.5 36h-219v-369z" />
<glyph unicode="S" horiz-adv-x="1229" d="M66 229l217 166q48 -68 91 -102t102 -53t136 -19q115 0 179.5 39.5t64.5 120.5q0 46 -22.5 77t-67.5 53.5t-156 51.5q-108 29 -203.5 58.5t-165 76.5t-109.5 118t-40 179q0 197 133 307.5t381 110.5q359 0 508 -246l-215 -168q-57 88 -128 126t-169 38t-159.5 -35.5 t-61.5 -111.5q0 -67 64 -102.5t223 -71.5q88 -23 174 -49.5t153.5 -73.5t108.5 -123t41 -195q0 -208 -136.5 -319t-402.5 -111q-184 0 -319.5 61t-220.5 197z" />
<glyph unicode="T" horiz-adv-x="1204" d="M35 1126v258h1134v-258h-426v-1126h-282v1126h-426z" />
<glyph unicode="U" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5z" />
<glyph unicode="V" horiz-adv-x="1243" d="M27 1384h286l312 -1032l311 1032h281l-431 -1384h-333z" />
<glyph unicode="W" horiz-adv-x="1833" d="M43 1384h281l221 -903l229 903h279l231 -909l227 909h279l-358 -1384h-289l-232 915l-233 -915h-285z" />
<glyph unicode="X" horiz-adv-x="1286" d="M29 0l463 694l-451 690h321l287 -466l297 466h311l-454 -684l452 -700h-317l-297 477l-301 -477h-311z" />
<glyph unicode="Y" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522z" />
<glyph unicode="Z" horiz-adv-x="1147" d="M72 0v238l635 888h-605v258h942v-227l-641 -899h658v-258h-989z" />
<glyph unicode="[" horiz-adv-x="764" d="M154 -395v1884h548v-207h-309v-1470h309v-207h-548z" />
<glyph unicode="\" horiz-adv-x="1036" d="M102 1520h256l691 -1819h-254z" />
<glyph unicode="]" horiz-adv-x="764" d="M61 -188h310v1470h-310v207h549v-1884h-549v207z" />
<glyph unicode="^" horiz-adv-x="1300" d="M123 594l434 790h186l435 -790h-220l-307 557l-309 -557h-219z" />
<glyph unicode="_" horiz-adv-x="1024" d="M-10 -154h1044v-102h-1044v102z" />
<glyph unicode="`" horiz-adv-x="1044" d="M195 1569h315l188 -361h-204z" />
<glyph unicode="a" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM350 299 q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="b" d="M145 0v1489h258v-524q142 114 314 114q211 0 309 -145.5t98 -401.5q0 -261 -109.5 -412t-312.5 -151q-80 0 -174.5 36.5t-150.5 92.5l-35 -98h-197zM403 291q43 -37 104.5 -65.5t119.5 -28.5q111 0 171 84.5t60 246.5t-51 243t-164 81q-63 0 -127.5 -29.5t-112.5 -72.5 v-459z" />
<glyph unicode="c" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148q135 0 240.5 -44t160.5 -136l-192 -137q-35 47 -82 69.5t-121 22.5q-132 0 -188 -81t-56 -251t57.5 -248.5t196.5 -78.5q60 0 110 17t95 75l195 -137q-60 -89 -158 -135t-248 -46q-254 0 -384 138.5t-130 410.5z" />
<glyph unicode="d" d="M92 516q0 267 115.5 415t324.5 148q74 0 152 -30.5t129 -77.5v518h258v-1489h-237v102q-72 -61 -152 -97t-182 -36q-198 0 -303 143t-105 404zM358 520q0 -151 51.5 -237t159.5 -86q64 0 130.5 29.5t113.5 72.5v459q-41 37 -101.5 65.5t-123.5 28.5q-104 0 -167 -89.5 t-63 -242.5z" />
<glyph unicode="e" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="f" horiz-adv-x="659" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133z" />
<glyph unicode="g" d="M92 535q0 162 51.5 285.5t151 191t240.5 67.5q83 0 166 -36.5t139 -92.5l34 99h197v-1029q0 -210 -129 -312.5t-414 -102.5q-235 0 -411 90l76 211q163 -76 335 -76q160 0 222.5 46t62.5 155v86q-128 -117 -309 -117q-192 0 -302 138t-110 397zM358 539q0 -160 57.5 -236 t149.5 -76q128 0 248 103v428q-106 94 -231 94q-94 0 -159 -86t-65 -227z" />
<glyph unicode="h" d="M145 0v1489h258v-576q82 82 175 124t182 42q176 0 247.5 -99t71.5 -280v-700h-258v578q0 166 -31 220t-110 54q-115 0 -277 -152v-700h-258z" />
<glyph unicode="i" horiz-adv-x="549" d="M131 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97zM145 0v1049h258v-1049h-258z" />
<glyph unicode="j" horiz-adv-x="563" d="M-162 -365l56 224q73 -29 151 -29t96.5 48t18.5 159v1012h258v-1094q0 -188 -84 -269t-275 -81q-43 0 -113 9.5t-108 20.5zM145 1335q0 70 32 100.5t110 30.5t111.5 -29.5t33.5 -101.5q0 -73 -36 -102t-109 -29q-82 0 -112 34t-30 97z" />
<glyph unicode="k" horiz-adv-x="1100" d="M145 0v1489h258v-852l353 412h299l-396 -441l418 -608h-293l-280 434l-101 -108v-326h-258z" />
<glyph unicode="l" horiz-adv-x="549" d="M145 0v1489h258v-1489h-258z" />
<glyph unicode="m" horiz-adv-x="1790" d="M145 0v1049h258v-136q72 78 151 122t175 44q131 0 193.5 -45t85.5 -133q90 90 168.5 134t183.5 44q153 0 223 -87t70 -292v-700h-258v618q0 93 -11 145t-33.5 70.5t-74.5 18.5q-59 0 -125 -44t-123 -108v-700h-258v618q0 102 -9 147.5t-32 66t-78 20.5q-48 0 -111 -36.5 t-137 -115.5v-700h-258z" />
<glyph unicode="n" d="M145 0v1049h258v-136q82 82 175 124t182 42q161 0 240 -88t79 -291v-700h-258v578q0 164 -29.5 219t-111.5 55q-115 0 -277 -152v-700h-258z" />
<glyph unicode="o" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="p" d="M145 -395v1444h238v-103q72 62 151.5 97.5t182.5 35.5q199 0 303 -140t104 -407q0 -169 -51 -298t-146 -197t-227 -68q-174 0 -297 109v-473h-258zM403 291q41 -37 101.5 -65.5t124.5 -28.5q106 0 167.5 90.5t61.5 240.5q0 153 -53 238.5t-158 85.5q-63 0 -129.5 -29.5 t-114.5 -72.5v-459z" />
<glyph unicode="q" d="M92 516q0 266 114 414.5t324 148.5q95 0 178 -40t132 -89l34 99h197v-1444h-258v479q-141 -115 -313 -115q-198 0 -303 140t-105 407zM358 520q0 -153 50 -238t161 -85q64 0 130.5 29.5t113.5 72.5v459q-47 43 -107.5 68.5t-117.5 25.5q-104 0 -167 -89.5t-63 -242.5z " />
<glyph unicode="r" horiz-adv-x="840" d="M145 0v1049h258v-150q66 72 142 119t170 47q80 0 114 -21l-51 -247q-40 20 -106 20q-72 0 -136.5 -34.5t-132.5 -100.5v-682h-258z" />
<glyph unicode="s" horiz-adv-x="1026" d="M76 152l192 135q47 -64 108.5 -85.5t131.5 -21.5q184 0 184 107q0 47 -52 72.5t-163 52.5q-209 46 -294 130t-85 218q0 139 106.5 229t313.5 90q141 0 248.5 -45t165.5 -135l-193 -137q-69 106 -225 106q-80 0 -121 -27.5t-41 -70.5q0 -41 37 -65.5t146 -51.5 q179 -44 255.5 -87.5t116 -108t39.5 -158.5q0 -104 -52.5 -178t-149 -113t-220.5 -39q-329 0 -448 183z" />
<glyph unicode="t" horiz-adv-x="739" d="M31 844v205h133v292h258v-292h244v-205h-244v-494q0 -98 30.5 -133t86.5 -35q71 0 141 29l45 -211q-104 -31 -219 -31q-182 0 -262 82t-80 266v527h-133z" />
<glyph unicode="u" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5z" />
<glyph unicode="v" horiz-adv-x="1040" d="M27 1049h264l233 -691l232 691h258l-377 -1049h-238z" />
<glyph unicode="w" horiz-adv-x="1565" d="M27 1049h268l162 -676l235 676h195l237 -670l156 670h258l-281 -1049h-235l-236 668l-237 -668h-236z" />
<glyph unicode="x" horiz-adv-x="1079" d="M31 0l362 518l-356 531h301l209 -332l215 332h285l-361 -517l363 -532h-306l-208 334l-218 -334h-286z" />
<glyph unicode="y" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30z" />
<glyph unicode="z" horiz-adv-x="930" d="M57 0v188l490 656h-477v205h786v-187l-491 -657h507v-205h-815z" />
<glyph unicode="{" horiz-adv-x="915" d="M102 453v221h39q111 0 170.5 77.5t59.5 223.5v139q0 197 95 301.5t318 104.5h70v-207h-41q-117 0 -160 -48t-43 -165v-166q0 -137 -64.5 -231.5t-174.5 -141.5q108 -39 173.5 -137t65.5 -234v-165q0 -117 43 -165t160 -48h41v-207h-70q-221 0 -317 103.5t-96 301.5v142 q0 141 -59.5 221t-170.5 80h-39z" />
<glyph unicode="|" horiz-adv-x="801" d="M281 -395v1915h239v-1915h-239z" />
<glyph unicode="}" horiz-adv-x="915" d="M61 -188h41q117 0 160 48t43 165v165q0 136 65.5 234t174.5 137q-111 47 -175.5 141.5t-64.5 231.5v166q0 117 -43 165t-160 48h-41v207h70q223 0 318.5 -104.5t95.5 -301.5v-139q0 -146 59.5 -223.5t169.5 -77.5h39v-221h-39q-110 0 -169.5 -80t-59.5 -221v-142 q0 -198 -96.5 -301.5t-317.5 -103.5h-70v207z" />
<glyph unicode="~" horiz-adv-x="1386" d="M143 580v229q56 47 106 73t95 38t117 12q65 0 128.5 -24.5t122 -54.5t114 -54.5t106.5 -24.5q80 0 154.5 38t156.5 110v-222q-67 -53 -141 -92t-166 -39q-72 0 -137.5 24.5t-126 54.5t-114.5 54.5t-101 24.5q-92 0 -170 -45t-144 -102z" />
<glyph unicode="&#xa1;" horiz-adv-x="584" d="M129 954q0 78 34 116t128 38q86 0 125 -34t39 -120q0 -82 -36 -117.5t-128 -35.5q-90 0 -126 35.5t-36 117.5zM152 -395l34 1059h215l31 -1059h-280z" />
<glyph unicode="&#xa2;" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148h18l48 209h180l-54 -237q145 -49 209 -152l-192 -137q-27 35 -66 61l-139 -628h12q60 0 110 17t95 75l195 -137q-60 -89 -158 -135t-248 -46l-55 2l-51 -231h-183l60 266q-152 57 -218.5 189.5t-66.5 322.5zM358 522q0 -196 74 -270 l133 600q-107 -9 -157 -86t-50 -244z" />
<glyph unicode="&#xa3;" horiz-adv-x="1280" d="M100 0v213q65 13 103 58.5t55.5 110t17.5 183.5h-151v189h137l-11 44q-42 128 -42 228q0 187 135 287t367 100q176 0 296.5 -61.5t184.5 -167.5l-217 -131q-41 65 -111.5 104t-152.5 39q-119 0 -176.5 -54.5t-57.5 -144.5q0 -73 44 -202l11 -41h379v-189h-370 q0 -224 -117 -325h784v-240h-1108z" />
<glyph unicode="&#xa4;" horiz-adv-x="1280" d="M139 281l142 135q-72 115 -72 231q0 125 72 232l-142 137l123 125l141 -140q105 72 236 72q57 0 119.5 -17.5t115.5 -54.5l142 140l125 -125l-144 -137q72 -109 72 -232q0 -122 -72 -231l144 -135l-125 -125l-142 139q-103 -72 -235 -72q-131 0 -236 72l-141 -139z M385 649q0 -102 75 -177t179 -75q65 0 124.5 33.5t94.5 93t35 125.5q0 104 -76.5 177t-175.5 73q-102 0 -179 -72t-77 -178z" />
<glyph unicode="&#xa5;" horiz-adv-x="1280" d="M45 1384h307l291 -538l295 538h297l-307 -538h211v-178h-314l-45 -80v-31h359v-176h-359v-381h-282v381h-361v176h361v27l-47 84h-314v178h213z" />
<glyph unicode="&#xa6;" horiz-adv-x="801" d="M281 283h239v-678h-239v678zM281 842v678h239v-678h-239z" />
<glyph unicode="&#xa7;" horiz-adv-x="1110" d="M92 545q0 188 211 307q-72 53 -110.5 110.5t-38.5 129.5q0 149 105.5 235t322.5 86q282 0 407 -160l-176 -131q-84 84 -227 84q-92 0 -133 -27.5t-41 -68.5q0 -31 45 -69.5t252 -166.5q128 -79 186.5 -133t90.5 -112.5t32 -126.5q0 -191 -211 -307q78 -60 113.5 -117.5 t35.5 -120.5q0 -162 -112.5 -243t-308.5 -81q-160 0 -257.5 43t-156.5 117l176 131q75 -84 233 -84q72 0 120 23.5t48 68.5t-74.5 97.5t-222.5 142.5q-153 92 -231 176t-78 197zM336 549q0 -41 67.5 -94.5t208.5 -139.5q68 41 115 89t47 90q0 24 -15.5 46.5t-48 49t-85 59.5 t-127.5 80q-80 -49 -121 -91t-41 -89z" />
<glyph unicode="&#xa8;" horiz-adv-x="1044" d="M152 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM596 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xa9;" horiz-adv-x="1802" d="M96 610q0 217 106 402.5t293.5 293t405.5 107.5q217 0 403 -106.5t293 -292.5t107 -404q0 -217 -105.5 -403t-292.5 -295t-405 -109q-219 0 -406 108.5t-293 295t-106 403.5zM258 610q0 -176 87.5 -328t235 -237.5t320.5 -85.5t320.5 85.5t235 237t87.5 328.5 q0 173 -86 323.5t-235.5 237t-321.5 86.5q-174 0 -323 -87t-234.5 -237.5t-85.5 -322.5zM504 612q0 217 100.5 331t317.5 114q133 0 209.5 -51.5t134.5 -143.5l-176 -100q-33 47 -67 78.5t-103 31.5q-109 0 -155 -59t-46 -201q0 -143 48 -200.5t155 -57.5q65 0 104 29t76 78 l180 -96q-71 -88 -118.5 -123.5t-106 -53.5t-131.5 -18q-422 0 -422 442z" />
<glyph unicode="&#xaa;" horiz-adv-x="834" d="M92 1014q0 105 65 164t222 73l129 13v20q0 49 -27.5 67.5t-93.5 18.5q-65 0 -95 -21.5t-46 -50.5l-148 93q31 53 100.5 91t192.5 38q146 0 224.5 -50.5t78.5 -191.5v-461h-174v57q-95 -75 -196 -75q-117 0 -174.5 59.5t-57.5 155.5zM285 1018q0 -39 19.5 -54.5 t57.5 -15.5q64 0 146 66v110l-68 -6q-90 -8 -122.5 -31.5t-32.5 -68.5z" />
<glyph unicode="&#xab;" horiz-adv-x="1436" d="M61 524l420 471h299l-420 -471l420 -471h-299zM635 524l420 471h299l-420 -471l420 -471h-299z" />
<glyph unicode="&#xac;" horiz-adv-x="1427" d="M133 801v205h1161v-682h-207v477h-954z" />
<glyph unicode="&#xad;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#xae;" horiz-adv-x="1802" d="M96 610q0 217 106 402.5t293.5 293t405.5 107.5q217 0 403 -106.5t293 -292.5t107 -404q0 -217 -105.5 -403t-292.5 -295t-405 -109q-219 0 -406 108.5t-293 295t-106 403.5zM258 610q0 -176 87.5 -328t235 -237.5t320.5 -85.5t320.5 85.5t235 237t87.5 328.5 q0 173 -86 323.5t-235.5 237t-321.5 86.5q-174 0 -323 -87t-234.5 -237.5t-85.5 -322.5zM588 201v850h305q178 0 260 -63t82 -197q0 -185 -145 -246l239 -344h-250l-211 307h-75v-307h-205zM793 682h96q54 0 81 7t39.5 25.5t12.5 65.5t-21.5 70.5t-103.5 23.5h-104v-192z " />
<glyph unicode="&#xaf;" horiz-adv-x="1044" d="M186 1255v185h672v-185h-672z" />
<glyph unicode="&#xb0;" horiz-adv-x="868" d="M123 1241q0 130 91.5 219.5t219.5 89.5q129 0 220 -90.5t91 -218.5q0 -83 -40.5 -154.5t-114 -115t-154.5 -43.5q-83 0 -157 42.5t-115 114t-41 156.5zM303 1241q0 -55 38 -94t95 -39q53 0 91 39t38 92q0 55 -38 93t-91 38q-59 0 -96 -39t-37 -90z" />
<glyph unicode="&#xb1;" horiz-adv-x="1427" d="M133 0v205h1161v-205h-1161zM133 829v205h479v479h205v-479h477v-205h-477v-477h-205v477h-479z" />
<glyph unicode="&#xb2;" horiz-adv-x="938" d="M76 1348q133 172 377 172q180 0 262 -71t82 -179q0 -60 -16 -107.5t-52.5 -92.5t-130.5 -115t-166 -111h397v-197h-737v182l108 78q228 160 283.5 217t55.5 113q0 78 -97 78q-101 0 -170 -88z" />
<glyph unicode="&#xb3;" horiz-adv-x="938" d="M59 801l199 102q64 -88 164 -88q72 0 98.5 32t26.5 66q0 91 -141 91h-115v176h102q92 0 124 22.5t32 63.5q0 28 -27.5 48.5t-85.5 20.5q-103 0 -168 -78l-182 107q61 74 143 115t224 41q172 0 255 -67t83 -159q0 -71 -38 -116t-124 -74q92 -23 134 -77t42 -126 q0 -137 -102.5 -203.5t-282.5 -66.5q-127 0 -221.5 49t-139.5 121z" />
<glyph unicode="&#xb4;" horiz-adv-x="1044" d="M348 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xb5;" horiz-adv-x="1202" d="M131 -395v1444h258v-750q29 -39 83 -69.5t114 -30.5q131 0 227 120v730h256v-1049h-238l-4 111q-49 -70 -104 -106t-133 -36q-62 0 -109 17.5t-92 52.5v-434h-258z" />
<glyph unicode="&#xb6;" horiz-adv-x="1321" d="M41 1047q0 206 134 324t378 118h727v-207h-188v-1677h-234v1677h-162v-1677h-233v1001q-204 22 -313 138t-109 303z" />
<glyph unicode="&#xb7;" horiz-adv-x="584" d="M129 743q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="&#xb8;" horiz-adv-x="1044" d="M199 -350l69 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l88 170h170l-31 -62q62 -14 104 -61t42 -121q0 -190 -287 -190q-174 0 -264 45z" />
<glyph unicode="&#xb9;" horiz-adv-x="938" d="M170 1200v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229z" />
<glyph unicode="&#xba;" horiz-adv-x="842" d="M92 1157q0 172 80 267.5t250 95.5q168 0 248 -95.5t80 -267.5q0 -170 -80 -264t-248 -94q-172 0 -251 95t-79 263zM285 1157q0 -100 31.5 -148t105.5 -48q72 0 103.5 47.5t31.5 148.5q0 119 -39 160t-96 41q-60 0 -98.5 -41t-38.5 -160z" />
<glyph unicode="&#xbb;" horiz-adv-x="1436" d="M82 53l420 471l-420 471h299l420 -471l-420 -471h-299zM655 53l420 471l-420 471h299l420 -471l-420 -471h-299z" />
<glyph unicode="&#xbc;" horiz-adv-x="2095" d="M45 1085v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229zM469 -51l747 1489h238l-750 -1489h-235zM1155 160v166l492 530h227v-524h115v-172h-115v-160h-232v160h-487zM1386 332h256v276z" />
<glyph unicode="&#xbd;" horiz-adv-x="2095" d="M43 1085v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229zM406 -51l747 1489h238l-750 -1489h-235zM1213 701q133 172 377 172q180 0 262 -71t82 -179q0 -60 -16 -107.5t-52.5 -92.5t-130.5 -115t-166 -111h397v-197h-737v182l108 78q228 160 283.5 217t55.5 113 q0 78 -97 78q-101 0 -170 -88z" />
<glyph unicode="&#xbe;" horiz-adv-x="2095" d="M59 686l199 102q64 -88 164 -88q72 0 98.5 32t26.5 66q0 91 -141 91h-115v176h102q92 0 124 22.5t32 63.5q0 28 -27.5 48.5t-85.5 20.5q-103 0 -168 -78l-182 107q61 74 143 115t224 41q172 0 255 -67t83 -159q0 -71 -38 -116t-124 -74q92 -23 134 -77t42 -126 q0 -137 -102.5 -203.5t-282.5 -66.5q-127 0 -221.5 49t-139.5 121zM592 -51l747 1489h238l-750 -1489h-235zM1202 160v166l492 530h227v-524h115v-172h-115v-160h-232v160h-487zM1433 332h256v276z" />
<glyph unicode="&#xbf;" horiz-adv-x="1071" d="M72 0q0 105 39 185t112.5 145.5t243.5 154.5v179h272v-302q-55 -28 -120.5 -61t-122 -75t-95.5 -94t-39 -120q0 -78 44.5 -122t152.5 -44q90 0 144.5 37t99.5 111l233 -139q-69 -123 -184 -186.5t-291 -63.5q-237 0 -363 103.5t-126 291.5zM436 954q0 86 39 120t125 34 q94 0 128 -38t34 -116q0 -82 -36 -117.5t-126 -35.5q-92 0 -128 35.5t-36 117.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM373 1905h315l188 -361h-204zM477 528h373l-186 572z" />
<glyph unicode="&#xc1;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM477 528h373l-186 572zM491 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xc2;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM305 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM477 528h373l-186 572z" />
<glyph unicode="&#xc3;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM254 1567q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5 q-67 0 -67 -127h-182zM477 528h373l-186 572z" />
<glyph unicode="&#xc4;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM293 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM477 528h373l-186 572zM737 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5 t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xc5;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM434 1716q0 107 57.5 166.5t171.5 59.5q119 0 175.5 -60.5t56.5 -165.5q0 -110 -59.5 -167.5t-172.5 -57.5q-117 0 -173 60.5t-56 164.5zM477 528h373l-186 572zM577 1716q0 -90 86 -90q88 0 88 90t-88 90 q-86 0 -86 -90z" />
<glyph unicode="&#xc6;" horiz-adv-x="1810" d="M20 0l555 1384h1135v-249h-567v-301h469v-250h-469v-326h567v-258h-850v360h-409l-144 -360h-287zM547 608h313v527h-104z" />
<glyph unicode="&#xc7;" horiz-adv-x="1333" d="M96 692q0 369 163 545t470 176q203 0 331 -68.5t195 -179.5l-219 -170q-48 72 -88 104t-91 48t-122 16q-170 0 -259 -108.5t-89 -362.5q0 -237 83.5 -354t266.5 -117q123 0 191.5 47t124.5 125l223 -164q-66 -96 -165 -164.5t-263 -87.5q61 -14 103 -61t42 -121 q0 -190 -286 -190q-172 0 -265 45l70 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l53 104q-578 37 -578 719z" />
<glyph unicode="&#xc8;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM267 1905h315l188 -361h-204z" />
<glyph unicode="&#xc9;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM426 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xca;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM236 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xcb;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM228 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM672 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xcc;" horiz-adv-x="872" d="M80 1905h315l188 -361h-204zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="&#xcd;" horiz-adv-x="872" d="M102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668zM270 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xce;" horiz-adv-x="872" d="M78 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="&#xcf;" horiz-adv-x="872" d="M72 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668zM516 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xd0;" horiz-adv-x="1399" d="M2 580v225h148v579h434q263 0 416.5 -70.5t228 -222.5t74.5 -399q0 -250 -74.5 -402t-224.5 -221t-418 -69h-436v580h-148zM432 258h127q184 0 278 40t134.5 130t40.5 266t-39 264.5t-132 128t-282 39.5h-127v-321h322v-225h-322v-322z" />
<glyph unicode="&#xd1;" horiz-adv-x="1411" d="M150 0v1384h366l469 -933v933h277v-1384h-332l-504 989v-989h-276zM285 1526q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5 q-67 0 -67 -127h-182z" />
<glyph unicode="&#xd2;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM371 1905h315l188 -361h-204zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5 t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd3;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5 t-69.5 -358.5zM530 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xd4;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM334 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM377 692q0 -246 70.5 -358.5t234.5 -112.5 q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd5;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM283 1567q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182 q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd6;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM332 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97z M377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5zM776 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xd7;" horiz-adv-x="1427" d="M129 145l438 437l-438 436l145 145l439 -436l438 436l145 -145l-438 -436l438 -437l-145 -145l-438 438l-439 -438z" />
<glyph unicode="&#xd8;" horiz-adv-x="1364" d="M27 -115l194 285q-135 180 -135 522q0 344 144.5 532.5t451.5 188.5q201 0 334 -84l108 160h199l-184 -270q139 -182 139 -527q0 -361 -152.5 -541t-443.5 -180q-207 0 -338 86l-117 -172h-200zM377 692q0 -157 26 -256l461 674q-69 53 -182 53q-166 0 -235.5 -112.5 t-69.5 -358.5zM496 276q67 -55 186 -55q166 0 235.5 112.5t69.5 358.5q0 158 -29 262z" />
<glyph unicode="&#xd9;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM392 1905h315l188 -361h-204z" />
<glyph unicode="&#xda;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM551 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xdb;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM365 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xdc;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM353 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM797 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xdd;" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522zM424 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xde;" horiz-adv-x="1239" d="M150 0v1384h282v-200h238q235 0 363 -109.5t128 -355.5q0 -250 -117.5 -371t-381.5 -121h-230v-227h-282zM432 473h115q155 0 214 21.5t84 71.5t25 151q0 81 -30 129.5t-91 70t-176 21.5h-141v-465z" />
<glyph unicode="&#xdf;" d="M145 0v1020q0 252 117.5 376t355.5 124q203 0 313.5 -91t110.5 -255q0 -123 -53 -196t-129 -106q122 -27 193 -136.5t71 -262.5q0 -250 -93 -377t-312 -127q-47 0 -103.5 10.5t-89.5 20.5v227q86 -30 154 -30q88 0 131 63.5t43 220.5q0 108 -28.5 160.5t-92.5 74 t-190 21.5v224q93 0 143 18.5t72 57t22 118.5q0 70 -43 106.5t-123 36.5q-104 0 -157.5 -59t-53.5 -211v-1028h-258z" />
<glyph unicode="&#xe0;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM207 1569h315 l188 -361h-204zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe1;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM350 299 q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM366 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xe2;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM195 1208l235 361 h244l236 -361h-211l-146 174l-149 -174h-209zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe3;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM150 1231 q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200 l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe4;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM168 1335 q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM612 1335q0 70 31.5 100.5t109.5 30.5 t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xe5;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM309 1378 q0 107 57.5 166.5t171.5 59.5q119 0 175.5 -60.5t56.5 -165.5q0 -110 -59.5 -167.5t-172.5 -57.5q-117 0 -173 60.5t-56 164.5zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM452 1378q0 -90 86 -90 q88 0 88 90t-88 90q-86 0 -86 -90z" />
<glyph unicode="&#xe6;" horiz-adv-x="1786" d="M84 303q0 157 105.5 244t332.5 106l221 21v47q0 86 -52 119.5t-148 33.5q-109 0 -162 -32.5t-80 -75.5l-201 129q53 89 164.5 136.5t276.5 47.5q254 0 356 -123q121 123 350 123q220 0 335.5 -127.5t115.5 -367.5v-127h-697q7 -140 67 -201t196 -61q73 0 130.5 19 t100.5 73l193 -137q-64 -91 -162.5 -136t-257.5 -45q-299 0 -428 168q-97 -82 -196 -125t-212 -43q-170 0 -259 91.5t-89 242.5zM350 299q0 -125 139 -125q64 0 140 25.5t141 76.5q-13 40 -20 113t-7 98l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM1008 635h434 q0 239 -211 239q-113 0 -160 -64.5t-63 -174.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148q135 0 240.5 -44t160.5 -136l-192 -137q-35 47 -82 69.5t-121 22.5q-132 0 -188 -81t-56 -251t57.5 -248.5t196.5 -78.5q60 0 110 17t95 75l195 -137q-105 -153 -318 -177q56 -16 93.5 -62t37.5 -116q0 -190 -286 -190q-172 0 -265 45 l70 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l55 106q-416 56 -416 543z" />
<glyph unicode="&#xe8;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM248 1569h315l188 -361h-204zM365 635h434q0 239 -209 239q-69 0 -113 -23.5 t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="&#xe9;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z M407 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xea;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM232 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM365 635h434 q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="&#xeb;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM220 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5 q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5zM664 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xec;" horiz-adv-x="549" d="M-53 1569h315l188 -361h-204zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xed;" horiz-adv-x="549" d="M127 1208l189 361h315l-299 -361h-205zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xee;" horiz-adv-x="549" d="M-80 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xef;" horiz-adv-x="549" d="M-92 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM145 0v1049h258v-1049h-258zM352 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xf0;" horiz-adv-x="1190" d="M92 520q0 156 55 278t158 186.5t238 64.5q41 0 94 -18.5t94 -49.5q-15 39 -65.5 122t-90.5 130l-225 -94l-67 149l180 76q-34 48 -184 156h274q49 -29 98 -78l187 78l69 -148l-131 -55q142 -147 232 -360t90 -435q0 -267 -126.5 -410t-375.5 -143q-247 0 -375.5 138 t-128.5 413zM358 520q0 -158 54.5 -241.5t183.5 -83.5t182 83.5t53 243.5q0 303 -237 303q-116 0 -176 -77.5t-60 -227.5z" />
<glyph unicode="&#xf1;" d="M145 0v1049h258v-136q82 82 175 124t182 42q161 0 240 -88t79 -291v-700h-258v578q0 164 -29.5 219t-111.5 55q-115 0 -277 -152v-700h-258zM197 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5 t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182z" />
<glyph unicode="&#xf2;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM269 1569h315l188 -361h-204zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5 t-56 -250.5z" />
<glyph unicode="&#xf3;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5zM428 1208l189 361h315 l-299 -361h-205z" />
<glyph unicode="&#xf4;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM242 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5 t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM191 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5 q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM230 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM358 522q0 -168 55.5 -247.5 t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5zM674 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xf7;" horiz-adv-x="1427" d="M133 479v205h1161v-205h-1161zM592 2v252h246v-252h-246zM592 911v252h246v-252h-246z" />
<glyph unicode="&#xf8;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q141 0 246 -47l61 92h182l-118 -180q131 -145 131 -422q0 -262 -121 -407.5t-381 -145.5q-144 0 -248 45l-59 -90h-183l117 176q-131 141 -131 422zM358 522q0 -103 23 -184l328 493q-45 23 -113 23q-126 0 -182 -81.5t-56 -250.5z M483 215q47 -20 113 -20q125 0 180 78.5t55 248.5q0 108 -22 185z" />
<glyph unicode="&#xf9;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM281 1569h315l188 -361h-204z" />
<glyph unicode="&#xfa;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM440 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xfb;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM244 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xfc;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM232 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM676 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xfd;" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30zM368 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xfe;" d="M145 -395v1884h258v-533q127 123 316 123q198 0 301.5 -141.5t103.5 -405.5q0 -169 -51 -298t-146 -197t-227 -68q-174 0 -297 109v-473h-258zM403 291q41 -37 101.5 -65.5t124.5 -28.5q106 0 167.5 90.5t61.5 240.5q0 153 -53 238.5t-158 85.5q-63 0 -129.5 -29.5 t-114.5 -72.5v-459z" />
<glyph unicode="&#xff;" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30zM179 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM623 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#x152;" horiz-adv-x="1919" d="M96 692q0 344 151.5 532.5t459.5 188.5q121 0 247 -29h865v-249h-568v-301h467v-250h-467v-326h568v-258h-861q-106 -29 -251 -29q-312 0 -461.5 189.5t-149.5 531.5zM387 692q0 -246 78 -358.5t264 -112.5q78 0 130 14.5t108 49.5v813q-100 65 -238 65q-182 0 -262 -110 t-80 -361z" />
<glyph unicode="&#x153;" horiz-adv-x="1874" d="M92 522q0 269 121 413t373 144q244 0 377 -149q57 63 144 106t230 43q219 0 334 -128.5t115 -366.5v-127h-696q6 -140 66.5 -201t193.5 -61q73 0 131.5 19t101.5 73l193 -137q-64 -91 -162 -136t-260 -45q-264 0 -391 152q-139 -152 -367 -152q-264 0 -384 146.5 t-120 406.5zM358 522q0 -168 55.5 -247.5t182.5 -79.5q117 0 176 74.5t59 252.5q0 184 -58 258t-177 74q-126 0 -182 -81.5t-56 -250.5zM1096 635h434q0 239 -209 239q-68 0 -113 -23.5t-71 -70.5t-41 -145z" />
<glyph unicode="&#x178;" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522zM226 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM670 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1044" d="M164 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1044" d="M113 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182z" />
<glyph unicode="&#x2000;" horiz-adv-x="971" />
<glyph unicode="&#x2001;" horiz-adv-x="1942" />
<glyph unicode="&#x2002;" horiz-adv-x="971" />
<glyph unicode="&#x2003;" horiz-adv-x="1942" />
<glyph unicode="&#x2004;" horiz-adv-x="647" />
<glyph unicode="&#x2005;" horiz-adv-x="485" />
<glyph unicode="&#x2006;" horiz-adv-x="323" />
<glyph unicode="&#x2007;" horiz-adv-x="323" />
<glyph unicode="&#x2008;" horiz-adv-x="242" />
<glyph unicode="&#x2009;" horiz-adv-x="388" />
<glyph unicode="&#x200a;" horiz-adv-x="107" />
<glyph unicode="&#x2010;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2011;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2012;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2013;" horiz-adv-x="1044" d="M31 424v205h983v-205h-983z" />
<glyph unicode="&#x2014;" horiz-adv-x="2068" d="M31 424v205h2007v-205h-2007z" />
<glyph unicode="&#x2018;" horiz-adv-x="584" d="M129 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43q-160 0 -160 181z" />
<glyph unicode="&#x2019;" horiz-adv-x="584" d="M129 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193z" />
<glyph unicode="&#x201a;" horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="&#x201c;" horiz-adv-x="1047" d="M129 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43q-160 0 -160 181zM592 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43 q-160 0 -160 181z" />
<glyph unicode="&#x201d;" horiz-adv-x="1047" d="M129 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193zM592 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-92 -183.5h-192z" />
<glyph unicode="&#x201e;" horiz-adv-x="1047" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113zM592 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-92 -183.5h-192q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="&#x2022;" horiz-adv-x="760" d="M92 745q0 78 38.5 145t106.5 105.5t144 38.5q115 0 201 -83t86 -206q0 -118 -84 -202t-203 -84q-76 0 -143 37.5t-106.5 104.5t-39.5 144z" />
<glyph unicode="&#x2026;" horiz-adv-x="2068" d="M188 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM870 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM1552 145q0 82 36 121t126 39q92 0 128 -38t36 -122 q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="&#x202f;" horiz-adv-x="388" />
<glyph unicode="&#x2039;" horiz-adv-x="862" d="M61 524l420 471h299l-420 -471l420 -471h-299z" />
<glyph unicode="&#x203a;" horiz-adv-x="862" d="M82 53l420 471l-420 471h299l420 -471l-420 -471h-299z" />
<glyph unicode="&#x205f;" horiz-adv-x="485" />
<glyph unicode="&#x20ac;" horiz-adv-x="1280" d="M20 444l39 191h58v119h-97l43 190h76q96 469 592 469q197 0 321 -68.5t189 -179.5l-201 -161q-53 78 -90.5 107.5t-85.5 44.5t-116 15q-132 0 -206.5 -55t-107.5 -172h522l-43 -190h-505v-119h487l-39 -191h-424q35 -127 110.5 -179t205.5 -52q92 0 162 40t143 146 l209 -149q-80 -118 -149 -174t-157 -80.5t-215 -24.5q-505 0 -602 473h-119z" />
<glyph unicode="&#x2122;" horiz-adv-x="1692" d="M43 1208v176h639v-176h-219v-538h-199v538h-221zM836 670v714h215l149 -303l152 303h215v-714h-193v391l-117 -232h-110l-119 234v-393h-192z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1050" d="M0 0v1050h1050v-1050h-1050z" />
<hkern u1="&#x28;" u2="j" k="-164" />
<hkern u1="&#x2a;" u2="&#xc5;" k="123" />
<hkern u1="&#x2a;" u2="&#xc4;" k="123" />
<hkern u1="&#x2a;" u2="&#xc3;" k="123" />
<hkern u1="&#x2a;" u2="&#xc2;" k="123" />
<hkern u1="&#x2a;" u2="&#xc1;" k="123" />
<hkern u1="&#x2a;" u2="&#xc0;" k="123" />
<hkern u1="&#x2a;" u2="T" k="-92" />
<hkern u1="&#x2a;" u2="J" k="174" />
<hkern u1="&#x2a;" u2="A" k="123" />
<hkern u1="A" u2="&#x3f;" k="102" />
<hkern u1="A" u2="&#x2a;" k="123" />
<hkern u1="F" u2="&#xef;" k="-61" />
<hkern u1="F" u2="&#xee;" k="-20" />
<hkern u1="K" u2="&#xef;" k="-10" />
<hkern u1="K" u2="&#xee;" k="41" />
<hkern u1="L" u2="&#xd8;" k="10" />
<hkern u1="L" u2="&#x3f;" k="102" />
<hkern u1="L" u2="&#x2a;" k="205" />
<hkern u1="T" u2="&#xef;" k="-123" />
<hkern u1="T" u2="&#xee;" k="-61" />
<hkern u1="T" u2="&#xe4;" k="123" />
<hkern u1="T" u2="&#xe3;" k="123" />
<hkern u1="T" u2="&#xe2;" k="164" />
<hkern u1="T" u2="&#x3f;" k="-82" />
<hkern u1="T" u2="&#x2a;" k="-92" />
<hkern u1="V" u2="&#xef;" k="-72" />
<hkern u1="V" u2="&#xee;" k="-10" />
<hkern u1="W" u2="&#xef;" k="-72" />
<hkern u1="W" u2="&#xee;" k="-10" />
<hkern u1="X" u2="&#xef;" k="-82" />
<hkern u1="X" u2="&#xee;" k="-41" />
<hkern u1="Y" u2="&#xef;" k="-102" />
<hkern u1="Y" u2="&#xee;" k="-20" />
<hkern u1="[" u2="j" k="-164" />
<hkern u1="f" u2="&#xef;" k="-225" />
<hkern u1="f" u2="&#xee;" k="-102" />
<hkern u1="f" u2="&#xec;" k="-82" />
<hkern u1="f" u2="&#x3f;" k="-123" />
<hkern u1="f" u2="&#x2a;" k="-143" />
<hkern u1="f" u2="&#x21;" k="-61" />
<hkern u1="j" u2="&#xff;" k="-41" />
<hkern u1="j" u2="&#xfd;" k="-41" />
<hkern u1="j" u2="y" k="-41" />
<hkern u1="&#x7b;" u2="j" k="-164" />
<hkern u1="&#xa1;" u2="&#x178;" k="102" />
<hkern u1="&#xa1;" u2="&#xdd;" k="102" />
<hkern u1="&#xa1;" u2="Y" k="102" />
<hkern u1="&#xa1;" u2="W" k="61" />
<hkern u1="&#xa1;" u2="V" k="61" />
<hkern u1="&#xbf;" u2="&#x178;" k="184" />
<hkern u1="&#xbf;" u2="&#xdd;" k="184" />
<hkern u1="&#xbf;" u2="Y" k="184" />
<hkern u1="&#xbf;" u2="W" k="123" />
<hkern u1="&#xbf;" u2="V" k="123" />
<hkern u1="&#xbf;" u2="T" k="184" />
<hkern u1="&#xc0;" u2="&#x3f;" k="102" />
<hkern u1="&#xc0;" u2="&#x2a;" k="123" />
<hkern u1="&#xc1;" u2="&#x3f;" k="102" />
<hkern u1="&#xc1;" u2="&#x2a;" k="123" />
<hkern u1="&#xc2;" u2="&#x3f;" k="102" />
<hkern u1="&#xc2;" u2="&#x2a;" k="123" />
<hkern u1="&#xc3;" u2="&#x3f;" k="102" />
<hkern u1="&#xc3;" u2="&#x2a;" k="123" />
<hkern u1="&#xc4;" u2="&#x3f;" k="102" />
<hkern u1="&#xc4;" u2="&#x2a;" k="123" />
<hkern u1="&#xc5;" u2="&#x3f;" k="102" />
<hkern u1="&#xc5;" u2="&#x2a;" k="123" />
<hkern u1="&#xdd;" u2="&#xef;" k="-102" />
<hkern u1="&#xdd;" u2="&#xee;" k="-20" />
<hkern u1="&#xde;" u2="X" k="123" />
<hkern u1="&#xde;" u2="W" k="31" />
<hkern u1="&#xde;" u2="V" k="31" />
<hkern u1="&#xde;" u2="T" k="82" />
<hkern u1="&#x178;" u2="&#xef;" k="-102" />
<hkern u1="&#x178;" u2="&#xee;" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="164" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="82" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="61" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="113" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle" k="123" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="colon,semicolon" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="t" k="31" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="z" k="-31" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="trademark" k="164" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteleft,quotedblleft" k="184" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteright,quotedblright" k="164" />
<hkern g1="B" g2="J" k="61" />
<hkern g1="B" g2="T" k="41" />
<hkern g1="B" g2="V" k="41" />
<hkern g1="B" g2="W" k="41" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="51" />
<hkern g1="C,Ccedilla" g2="J" k="20" />
<hkern g1="C,Ccedilla" g2="V" k="31" />
<hkern g1="C,Ccedilla" g2="W" k="31" />
<hkern g1="C,Ccedilla" g2="X" k="31" />
<hkern g1="C,Ccedilla" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="F" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="102" />
<hkern g1="F" g2="J" k="246" />
<hkern g1="F" g2="X" k="41" />
<hkern g1="F" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="231" />
<hkern g1="F" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="F" g2="t" k="20" />
<hkern g1="F" g2="z" k="61" />
<hkern g1="F" g2="S" k="20" />
<hkern g1="F" g2="Z" k="41" />
<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="41" />
<hkern g1="F" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="F" g2="m,n,p,r,ntilde" k="72" />
<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="F" g2="s" k="82" />
<hkern g1="F" g2="u,ugrave,uacute,ucircumflex,udieresis" k="41" />
<hkern g1="F" g2="v" k="41" />
<hkern g1="F" g2="w" k="41" />
<hkern g1="F" g2="x" k="82" />
<hkern g1="F" g2="y,yacute,ydieresis" k="61" />
<hkern g1="G" g2="J" k="51" />
<hkern g1="G" g2="T" k="41" />
<hkern g1="G" g2="V" k="41" />
<hkern g1="G" g2="W" k="41" />
<hkern g1="G" g2="X" k="31" />
<hkern g1="G" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="J" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="J" g2="J" k="61" />
<hkern g1="J" g2="X" k="20" />
<hkern g1="J" g2="AE" k="61" />
<hkern g1="K" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="K" g2="T" k="31" />
<hkern g1="K" g2="V" k="51" />
<hkern g1="K" g2="W" k="51" />
<hkern g1="K" g2="X" k="41" />
<hkern g1="K" g2="Y,Yacute,Ydieresis" k="82" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="K" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="K" g2="t" k="61" />
<hkern g1="K" g2="S" k="51" />
<hkern g1="K" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="K" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="K" g2="m,n,p,r,ntilde" k="41" />
<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="K" g2="s" k="61" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="K" g2="v" k="51" />
<hkern g1="K" g2="w" k="51" />
<hkern g1="K" g2="y,yacute,ydieresis" k="102" />
<hkern g1="K" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="L" g2="T" k="143" />
<hkern g1="L" g2="V" k="102" />
<hkern g1="L" g2="W" k="102" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="143" />
<hkern g1="L" g2="quotedbl,quotesingle" k="287" />
<hkern g1="L" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-20" />
<hkern g1="L" g2="colon,semicolon" k="-41" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="L" g2="t" k="31" />
<hkern g1="L" g2="trademark" k="287" />
<hkern g1="L" g2="quoteleft,quotedblleft" k="328" />
<hkern g1="L" g2="quoteright,quotedblright" k="328" />
<hkern g1="L" g2="S" k="10" />
<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="L" g2="v" k="61" />
<hkern g1="L" g2="w" k="61" />
<hkern g1="L" g2="y,yacute,ydieresis" k="102" />
<hkern g1="L" g2="copyright,registered" k="61" />
<hkern g1="P,Thorn" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="102" />
<hkern g1="P,Thorn" g2="J" k="164" />
<hkern g1="P,Thorn" g2="T" k="20" />
<hkern g1="P,Thorn" g2="V" k="-10" />
<hkern g1="P,Thorn" g2="W" k="-10" />
<hkern g1="P,Thorn" g2="X" k="20" />
<hkern g1="P,Thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="266" />
<hkern g1="P,Thorn" g2="S" k="-20" />
<hkern g1="P,Thorn" g2="Z" k="41" />
<hkern g1="P,Thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="P,Thorn" g2="AE" k="82" />
<hkern g1="P,Thorn" g2="I,Igrave,Iacute,Icircumflex,Idieresis" k="41" />
<hkern g1="R" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="R" g2="T" k="20" />
<hkern g1="R" g2="V" k="41" />
<hkern g1="R" g2="W" k="41" />
<hkern g1="R" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="S" g2="J" k="41" />
<hkern g1="S" g2="T" k="41" />
<hkern g1="S" g2="V" k="31" />
<hkern g1="S" g2="W" k="31" />
<hkern g1="S" g2="X" k="20" />
<hkern g1="S" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="164" />
<hkern g1="T" g2="J" k="143" />
<hkern g1="T" g2="X" k="20" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="184" />
<hkern g1="T" g2="colon,semicolon" k="82" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="51" />
<hkern g1="T" g2="t" k="20" />
<hkern g1="T" g2="z" k="156" />
<hkern g1="T" g2="trademark" k="-82" />
<hkern g1="T" g2="quoteleft,quotedblleft" k="-41" />
<hkern g1="T" g2="quoteright,quotedblright" k="-41" />
<hkern g1="T" g2="S" k="41" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="205" />
<hkern g1="T" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="T" g2="m,n,p,r,ntilde" k="184" />
<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="205" />
<hkern g1="T" g2="s" k="205" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="143" />
<hkern g1="T" g2="v" k="184" />
<hkern g1="T" g2="w" k="184" />
<hkern g1="T" g2="x" k="205" />
<hkern g1="T" g2="y,yacute,ydieresis" k="143" />
<hkern g1="T" g2="AE" k="184" />
<hkern g1="T" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="T" g2="copyright,registered" k="102" />
<hkern g1="T" g2="hyphen,endash,emdash" k="102" />
<hkern g1="T" g2="guillemotleft,guilsinglleft" k="143" />
<hkern g1="T" g2="guillemotright,guilsinglright" k="61" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="51" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="X" k="41" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="61" />
<hkern g1="W" g2="J" k="143" />
<hkern g1="W" g2="X" k="20" />
<hkern g1="W" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="W" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="W" g2="t" k="20" />
<hkern g1="W" g2="z" k="41" />
<hkern g1="W" g2="S" k="10" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="W" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="W" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="W" g2="s" k="61" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="W" g2="x" k="31" />
<hkern g1="W" g2="y,yacute,ydieresis" k="20" />
<hkern g1="W" g2="AE" k="41" />
<hkern g1="W" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="W" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="X" g2="T" k="20" />
<hkern g1="X" g2="V" k="20" />
<hkern g1="X" g2="W" k="20" />
<hkern g1="X" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="X" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="X" g2="S" k="20" />
<hkern g1="X" g2="m,n,p,r,ntilde" k="31" />
<hkern g1="X" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="82" />
<hkern g1="X" g2="v" k="41" />
<hkern g1="X" g2="w" k="41" />
<hkern g1="X" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="31" />
<hkern g1="X" g2="copyright,registered" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="113" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="184" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="205" />
<hkern g1="Y,Yacute,Ydieresis" g2="colon,semicolon" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="t" k="31" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="133" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="143" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="v" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="w" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="AE" k="143" />
<hkern g1="Y,Yacute,Ydieresis" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="copyright,registered" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="guillemotleft,guilsinglleft" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="b,h,k,l,germandbls,thorn" k="41" />
<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="31" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="t" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteleft,quotedblleft" k="61" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteright,quotedblright" k="61" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="v" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="x" k="31" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="y,yacute,ydieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="v" k="10" />
<hkern g1="h,m,n,ntilde" g2="w" k="10" />
<hkern g1="f" g2="quotedbl,quotesingle" k="-123" />
<hkern g1="f" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="41" />
<hkern g1="f" g2="trademark" k="-164" />
<hkern g1="f" g2="quoteleft,quotedblleft" k="-102" />
<hkern g1="f" g2="quoteright,quotedblright" k="-123" />
<hkern g1="f" g2="parenright,bracketright,braceright" k="-164" />
<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="k" g2="s" k="20" />
<hkern g1="k" g2="v" k="20" />
<hkern g1="k" g2="w" k="20" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="266" />
<hkern g1="r" g2="quoteleft,quotedblleft" k="-41" />
<hkern g1="r" g2="quoteright,quotedblright" k="-41" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="r" g2="s" k="20" />
<hkern g1="r" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="-20" />
<hkern g1="r" g2="guillemotright,guilsinglright" k="-41" />
<hkern g1="s" g2="t" k="20" />
<hkern g1="s" g2="v" k="41" />
<hkern g1="s" g2="w" k="41" />
<hkern g1="s" g2="x" k="20" />
<hkern g1="t" g2="z" k="-31" />
<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="-20" />
<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="t" g2="u,ugrave,uacute,ucircumflex,udieresis" k="10" />
<hkern g1="t" g2="v" k="10" />
<hkern g1="t" g2="w" k="10" />
<hkern g1="t" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="w" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="w" g2="s" k="20" />
<hkern g1="w" g2="y,yacute,ydieresis" k="10" />
<hkern g1="x" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="31" />
<hkern g1="y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="y,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="y,yacute,ydieresis" g2="s" k="31" />
<hkern g1="y,yacute,ydieresis" g2="v" k="20" />
<hkern g1="y,yacute,ydieresis" g2="w" k="20" />
<hkern g1="y,yacute,ydieresis" g2="x" k="31" />
<hkern g1="y,yacute,ydieresis" g2="parenright,bracketright,braceright" k="61" />
<hkern g1="z" g2="z" k="-31" />
<hkern g1="colon,semicolon" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="colon,semicolon" g2="J" k="-41" />
<hkern g1="colon,semicolon" g2="T" k="82" />
<hkern g1="colon,semicolon" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="J" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="T" k="184" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="V" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="W" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="Y,Yacute,Ydieresis" k="205" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteleft,quotedblleft" k="174" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteright,quotedblright" k="174" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="v" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="w" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="AE" k="-61" />
<hkern g1="guillemotleft,guilsinglleft" g2="T" k="61" />
<hkern g1="guillemotright,guilsinglright" g2="T" k="143" />
<hkern g1="guillemotright,guilsinglright" g2="Y,Yacute,Ydieresis" k="102" />
<hkern g1="hyphen,endash,emdash" g2="T" k="102" />
<hkern g1="parenleft,bracketleft,braceleft" g2="y,yacute,ydieresis" k="-61" />
<hkern g1="quoteleft,quotedblleft" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteleft,quotedblleft" g2="J" k="246" />
<hkern g1="quoteleft,quotedblleft" g2="T" k="-41" />
<hkern g1="quoteleft,quotedblleft" g2="quoteleft,quotedblleft" k="113" />
<hkern g1="quoteleft,quotedblleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="quoteleft,quotedblleft" g2="AE" k="184" />
<hkern g1="quoteright,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteright,quotedblright" g2="J" k="246" />
<hkern g1="quoteright,quotedblright" g2="T" k="-41" />
<hkern g1="quoteright,quotedblright" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="174" />
<hkern g1="quoteright,quotedblright" g2="quoteright,quotedblright" k="113" />
<hkern g1="quoteright,quotedblright" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="quoteright,quotedblright" g2="AE" k="184" />
<hkern g1="quotedbl,quotesingle" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="123" />
<hkern g1="quotedbl,quotesingle" g2="J" k="225" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="82" />
<hkern g1="V" g2="J" k="143" />
<hkern g1="V" g2="X" k="20" />
<hkern g1="V" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="V" g2="t" k="20" />
<hkern g1="V" g2="z" k="41" />
<hkern g1="V" g2="S" k="10" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="V" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="V" g2="s" k="61" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="V" g2="x" k="31" />
<hkern g1="V" g2="y,yacute,ydieresis" k="20" />
<hkern g1="V" g2="AE" k="41" />
<hkern g1="V" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="V" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="v" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="v" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="v" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="v" g2="s" k="20" />
<hkern g1="v" g2="y,yacute,ydieresis" k="10" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 77 KiB

View File

@ -1,670 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="clear_sans_lightregular" horiz-adv-x="541" >
<font-face units-per-em="2048" ascent="1489" descent="-559" />
<missing-glyph horiz-adv-x="539" />
<glyph unicode="&#xfb01;" horiz-adv-x="1110" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM772 1305q0 45 20 65.5t70 20.5 q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5q-51 0 -70.5 23t-19.5 65zM798 0v1049h129v-1049h-129z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1135" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM811 0v1489h129v-1489h-129z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1729" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM665 938v111h164v116q0 91 15 158t49.5 111 t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM1391 1305q0 45 20 65.5t70 20.5q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5 q-51 0 -70.5 23t-19.5 65zM1417 0v1049h129v-1049h-129z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1753" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM665 938v111h164v116q0 91 15 158t49.5 111 t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM1430 0v1489h129v-1489h-129z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="539" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="539" />
<glyph unicode="&#x09;" horiz-adv-x="539" />
<glyph unicode="&#xa0;" horiz-adv-x="539" />
<glyph unicode="!" d="M168 78q0 49 23 70.5t77 21.5q57 0 80 -22t23 -70q0 -53 -25 -72.5t-78 -19.5q-29 0 -48.5 6t-31 18t-16 29t-4.5 39zM195 1384h149l-18 -1005h-107z" />
<glyph unicode="&#x22;" horiz-adv-x="892" d="M197 1452h166l-37 -520h-94zM529 1452h166l-37 -520h-94z" />
<glyph unicode="#" horiz-adv-x="1466" d="M119 397v95h289l108 399h-280v96h305l104 397h103l-105 -397h336l106 397h103l-105 -397h265v-96h-289l-107 -399h279v-95h-307l-107 -397h-102l104 397h-336l-106 -397h-101l105 397h-262zM508 492h340l108 399h-338z" />
<glyph unicode="$" horiz-adv-x="1255" d="M199 324l106 61q16 -32 40.5 -64t59 -59t81 -46.5t106.5 -25.5v476q-100 21 -169.5 50.5t-113 69t-63 89.5t-19.5 112t21 118.5t65.5 100.5t113.5 71.5t165 31.5v104h102v-104q72 -4 129.5 -21t103 -46t80.5 -69.5t64 -91.5l-108 -59q-19 37 -43.5 68t-57 55t-74.5 38.5 t-94 18.5v-438q78 -18 148 -43t122 -65t82.5 -98t30.5 -142q0 -81 -30 -142t-81.5 -102.5t-121.5 -63.5t-150 -26v-215h-102v215q-83 4 -146 28t-110 58.5t-80 75.5t-57 80zM356 989q0 -48 20 -81t53 -56t75.5 -38t87.5 -26v414q-66 -4 -111 -21t-73 -44.5t-40 -65 t-12 -82.5zM694 190q48 3 93.5 17t81 40.5t57.5 67.5t22 99q0 88 -61 142.5t-193 86.5v-453z" />
<glyph unicode="%" horiz-adv-x="2052" d="M123 975q0 224 90.5 331t263.5 107q181 0 269 -114t88 -324q0 -218 -88.5 -328t-268.5 -110q-185 0 -269.5 107.5t-84.5 330.5zM256 975q0 -86 10.5 -149.5t35.5 -105t67.5 -61.5t107.5 -20q64 0 107 21t69 63t37.5 105t11.5 147q0 66 -8.5 126.5t-32.5 106.5t-68 73.5 t-116 27.5q-65 0 -108 -21.5t-68 -63.5t-35 -104.5t-10 -144.5zM565 -51l799 1487h125l-801 -1487h-123zM1219 408q0 224 90 331t264 107q181 0 267.5 -112.5t86.5 -325.5q0 -439 -354 -439q-94 0 -161 27.5t-110 82t-63 137t-20 192.5zM1350 408q0 -85 10.5 -148t36 -105 t68.5 -62.5t108 -20.5q63 0 105.5 20.5t69 62.5t37.5 105t11 148q0 67 -8 127t-32 106t-68 73t-115 27q-65 0 -108 -21t-68.5 -63t-36 -104.5t-10.5 -144.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1430" d="M160 352q0 72 18.5 126.5t59 102.5t105.5 94.5t157 100.5q-44 51 -76.5 95.5t-54.5 85t-32.5 77.5t-10.5 74q0 152 89.5 228.5t262.5 76.5q81 0 141.5 -20.5t101 -56t60.5 -83.5t20 -102q0 -62 -21 -116.5t-60.5 -103.5t-97.5 -93.5t-132 -87.5l371 -439q42 53 79 127 t62 170l121 -30q-28 -116 -77 -210t-103 -153l184 -215h-172l-104 123q-39 -32 -82.5 -59.5t-93.5 -48t-109.5 -32.5t-130.5 -12q-117 0 -205.5 28.5t-148.5 79t-90.5 120.5t-30.5 153zM297 352q0 -65 26.5 -114.5t72.5 -84t108.5 -52t134.5 -17.5q108 0 191.5 37.5 t142.5 93.5l-395 471q-91 -54 -146 -95t-85 -78t-40 -75t-10 -86zM459 1112q0 -60 40 -123.5t115 -148.5q72 40 121 79.5t78.5 78t42 76t12.5 75.5q0 34 -12 63t-36.5 50t-61.5 33t-86 12q-69 0 -111 -19t-64.5 -48t-30 -63t-7.5 -65z" />
<glyph unicode="'" horiz-adv-x="561" d="M197 1452h165l-34 -520h-95z" />
<glyph unicode="(" horiz-adv-x="766" d="M170 561q0 144 21.5 273.5t64.5 247t108.5 226t153.5 210.5h146q-95 -94 -164.5 -204t-115.5 -232t-68.5 -253.5t-22.5 -267.5q0 -135 22 -260.5t67.5 -243.5t115.5 -230.5t166 -221.5h-146q-91 111 -156.5 220.5t-108 225t-63 241t-20.5 269.5z" />
<glyph unicode=")" horiz-adv-x="797" d="M131 -395q193 213 282 449.5t89 506.5q0 275 -90.5 517t-280.5 440h145q88 -102 154 -210.5t110 -226t65.5 -247t21.5 -273.5q0 -147 -22 -274.5t-66 -243t-109.5 -223.5t-153.5 -215h-145z" />
<glyph unicode="*" horiz-adv-x="967" d="M123 1016l285 155l-285 156l45 78l272 -158l-4 273h92l-4 -273l275 158l45 -78l-287 -156l287 -155l-45 -78l-275 160l4 -273h-92l4 273l-272 -160z" />
<glyph unicode="+" horiz-adv-x="1427" d="M178 528v111h477v481h111v-481h481v-111h-481v-477h-111v477h-477z" />
<glyph unicode="," d="M172 78q0 46 22 69t74 23q101 0 101 -115q0 -56 -10.5 -107.5t-26 -95t-34.5 -75.5t-36 -49h-76q20 22 35.5 54t26 67t15.5 71t5 66q-55 0 -75.5 22t-20.5 70z" />
<glyph unicode="-" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="." d="M172 78q0 48 22 70t74 22q54 0 77.5 -21.5t23.5 -70.5q0 -53 -25 -72.5t-76 -19.5q-55 0 -75.5 23.5t-20.5 68.5z" />
<glyph unicode="/" horiz-adv-x="952" d="M18 -299l727 1819h123l-729 -1819h-121z" />
<glyph unicode="0" horiz-adv-x="1255" d="M137 686q0 185 29.5 320.5t89.5 223.5t152.5 130.5t218.5 42.5t218.5 -42.5t153 -130.5t90 -223t29.5 -319q0 -368 -119.5 -543.5t-371.5 -175.5q-126 0 -218.5 42.5t-152.5 131t-89.5 223.5t-29.5 320zM281 686q0 -156 21 -269t63.5 -186t107.5 -108t154 -35 q88 0 153 35t108 108.5t64 186.5t21 270t-21 269.5t-64 185t-108 107t-153 34.5q-91 0 -156.5 -35t-107.5 -108.5t-62 -186.5t-20 -268z" />
<glyph unicode="1" horiz-adv-x="1255" d="M297 1004v112q80 4 142 27t107.5 59.5t75 83.5t44.5 98h98v-1384h-133v1128q-28 -30 -66 -53.5t-82 -39t-91.5 -23.5t-94.5 -8z" />
<glyph unicode="2" horiz-adv-x="1180" d="M152 1178q18 35 49.5 76t83 76.5t124.5 59t173 23.5q85 0 162 -21t135 -67.5t92.5 -120t34.5 -178.5q0 -59 -12 -111t-34.5 -99.5t-54 -93t-71.5 -91.5q-43 -48 -92 -100.5t-111 -113.5t-141 -133.5t-181 -160.5h742v-123h-895v143q76 64 160.5 141.5t165.5 157 t152.5 155.5t119.5 138q46 62 76 130.5t30 156.5q0 67 -21.5 118t-59.5 84.5t-90.5 50.5t-113.5 17q-112 0 -187 -48.5t-122 -133.5z" />
<glyph unicode="3" horiz-adv-x="1180" d="M121 164l106 72q21 -31 52.5 -57.5t70 -46t83 -31t91.5 -11.5q87 0 151 18t106 56.5t62.5 98.5t20.5 143q0 136 -84 206t-268 70h-92v119h76q77 0 140.5 17t108.5 50t70 82t25 113q0 117 -74.5 173t-206.5 56q-111 0 -187.5 -43.5t-127.5 -124.5l-113 72q25 42 62.5 81 t90 69t122.5 48.5t161 18.5q110 0 188.5 -26t129 -71t74.5 -105.5t24 -129.5q0 -137 -70 -216.5t-204 -114.5q64 -6 118.5 -31.5t94.5 -69.5t63 -107t23 -145q0 -106 -32 -185.5t-93.5 -133t-150.5 -80.5t-204 -27q-61 0 -122.5 13t-116 38t-98.5 61t-70 81z" />
<glyph unicode="4" horiz-adv-x="1255" d="M66 346v133l743 905h111v-919h200v-119h-200v-346h-132v346h-722zM203 465h585v706z" />
<glyph unicode="5" horiz-adv-x="1180" d="M143 162l111 76q18 -29 47 -56t66 -47.5t81.5 -32.5t94.5 -12q87 0 149 26t102 71.5t59 108t19 136.5q0 80 -24.5 136.5t-67 92.5t-101 53t-126.5 17q-74 0 -138 -19t-118 -55h-72l74 727h682v-122h-571l-48 -465q22 11 50.5 20.5t58.5 16t59.5 10.5t55.5 4 q99 0 178.5 -26.5t135.5 -78t86 -128.5t30 -179q0 -108 -30.5 -194.5t-90 -146.5t-147 -92t-201.5 -32q-75 0 -139 15.5t-115.5 42t-89.5 61t-60 72.5z" />
<glyph unicode="6" horiz-adv-x="1180" d="M133 670q0 153 30 288t93.5 236t163 160t239.5 59q110 0 193.5 -34.5t153.5 -108.5l-88 -101q-28 30 -56 53.5t-59.5 39t-67.5 24t-80 8.5q-90 0 -157.5 -39t-113 -109.5t-71 -168.5t-32.5 -215q28 19 66 38.5t84 35.5t98 26t108 10q94 0 171.5 -24t132 -75.5 t84.5 -131.5t30 -192q0 -114 -30 -203t-87 -150t-140.5 -93t-191.5 -32q-128 -1 -217.5 44t-146.5 133.5t-83 219.5t-26 302zM281 653q0 -163 22 -271t64 -173t102.5 -92t138.5 -27q79 0 137 25t95.5 70.5t56 110.5t18.5 146q0 89 -22.5 149t-63 96t-98 51.5t-127.5 15.5 q-39 0 -82 -8t-85.5 -21.5t-82.5 -32t-73 -39.5z" />
<glyph unicode="7" horiz-adv-x="1255" d="M152 1262v122h929v-129l-530 -1255h-150l543 1262h-792z" />
<glyph unicode="8" horiz-adv-x="1180" d="M121 346q0 140 82.5 234.5t245.5 156.5q-65 31 -119 61.5t-92.5 68.5t-60 86.5t-21.5 115.5q0 76 26.5 139.5t80.5 109t136 70.5t193 25q213 0 323.5 -87.5t110.5 -254.5q0 -73 -26.5 -126.5t-68.5 -93t-93.5 -67.5t-100.5 -49q72 -34 132 -69t102.5 -79.5t66 -102.5 t23.5 -138q0 -94 -32 -164t-92.5 -117t-147.5 -70.5t-197 -23.5q-236 0 -353.5 96t-117.5 279zM258 344q0 -120 82.5 -190t251.5 -70q170 0 251 70t81 192q0 58 -19.5 103t-60 83t-103 72.5t-147.5 73.5q-83 -30 -146 -63t-105 -73t-63.5 -88.5t-21.5 -109.5zM293 1073 q0 -39 13 -72t47 -65t93.5 -65.5t151.5 -73.5q73 27 127.5 55t91 60t54.5 69.5t18 85.5q0 52 -17.5 95t-54 73.5t-92.5 47.5t-133 17q-78 0 -134.5 -16.5t-93 -46.5t-54 -71.5t-17.5 -92.5z" />
<glyph unicode="9" horiz-adv-x="1180" d="M123 936q0 114 30.5 202.5t88 149.5t141 93t190.5 32q129 0 219 -45t146 -132.5t81 -216t25 -294.5q0 -104 -12.5 -200.5t-39.5 -180.5t-69 -152.5t-100.5 -117.5t-135.5 -76t-173 -27q-119 0 -206 40.5t-152 111.5l88 98q27 -30 56 -54t62 -41.5t71.5 -26.5t84.5 -9 q94 0 162.5 39t114.5 109t70.5 168t31.5 217q-29 -20 -67 -40t-83.5 -36t-97 -26.5t-106.5 -10.5q-95 0 -172.5 24.5t-132.5 76.5t-85 132.5t-30 192.5zM262 942q0 -90 22.5 -150t64 -95.5t98.5 -50.5t126 -15q39 0 82.5 8t86 21.5t83 31t74.5 37.5q0 135 -16.5 240.5 t-55 177.5t-101.5 109.5t-155 37.5q-79 0 -137 -25t-96.5 -71t-57 -111t-18.5 -145z" />
<glyph unicode=":" d="M172 78q0 48 22 70t74 22q54 0 77.5 -21.5t23.5 -70.5q0 -53 -25 -72.5t-76 -19.5q-55 0 -75.5 23.5t-20.5 68.5zM172 956q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5t-20.5 67.5z" />
<glyph unicode=";" d="M172 78q0 46 22 69t74 23q53 0 77 -28t24 -87q0 -56 -10.5 -107.5t-26 -95t-34.5 -75.5t-36 -49h-76q20 22 35.5 54t26 67t15.5 71t5 66q-55 0 -75.5 22t-20.5 70zM172 956q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5 t-20.5 67.5z" />
<glyph unicode="&#x3c;" horiz-adv-x="1427" d="M180 543v88l1067 454v-120l-897 -379l897 -377v-121z" />
<glyph unicode="=" horiz-adv-x="1427" d="M178 305v111h1069v-111h-1069zM178 756v110h1069v-110h-1069z" />
<glyph unicode="&#x3e;" horiz-adv-x="1427" d="M180 88v121l897 377l-897 379v120l1067 -454v-88z" />
<glyph unicode="?" horiz-adv-x="1036" d="M86 1225q21 39 56.5 73t84 59.5t110 40.5t136.5 15q93 0 172.5 -22t138 -66.5t92 -111t33.5 -156.5q0 -85 -29 -152.5t-83 -125t-131 -109.5t-172 -105v-213h-127v271q106 54 181.5 102.5t124 97.5t71 103.5t22.5 120.5q0 56 -18.5 101t-55.5 77t-91 49.5t-126 17.5 q-59 0 -104 -11.5t-79 -31t-58 -44.5t-39 -52zM330 78q0 49 23 70.5t77 21.5q57 0 79.5 -21.5t22.5 -70.5q0 -53 -24.5 -72.5t-77.5 -19.5q-29 0 -48.5 6t-31 18t-16 29t-4.5 39z" />
<glyph unicode="@" horiz-adv-x="1927" d="M129 553q0 123 29 235t83 207.5t131 172.5t172 131.5t206.5 84t234.5 29.5q201 0 356 -57.5t260.5 -165.5t159.5 -262.5t54 -347.5q0 -105 -19 -206t-63 -180.5t-115.5 -128.5t-175.5 -49q-53 0 -92.5 9t-67 28t-44 49.5t-24.5 73.5q-74 -60 -152.5 -96.5t-156.5 -36.5 q-103 0 -172.5 41t-112 108t-61 151t-18.5 171q0 114 25 207.5t76 160t127.5 102.5t180.5 36q42 0 80.5 -10t72.5 -24.5t60.5 -31t44.5 -30.5v67h129v-739q0 -37 6.5 -61.5t20 -39.5t34.5 -21.5t50 -6.5q65 0 111.5 38t76.5 101t44 144.5t14 168.5q0 168 -43 303.5t-131 230 t-220.5 145.5t-312.5 51q-110 0 -207.5 -26t-179.5 -74t-146.5 -116t-110 -151.5t-69.5 -181.5t-24 -205q0 -178 52 -318t148 -237t231 -148t302 -51q119 0 222 11t194 32l26 -110q-45 -10 -98 -17.5t-110 -12t-117 -7t-119 -2.5q-188 0 -345 58t-269.5 168t-175 270.5 t-62.5 365.5zM672 518q0 -65 11 -128.5t39.5 -114t77.5 -82t126 -31.5q37 0 74.5 11.5t73.5 30t69.5 40.5t62.5 43v524q-24 17 -53.5 33.5t-61.5 30t-64.5 22t-61.5 8.5q-81 0 -137 -26t-90.5 -76t-50 -122t-15.5 -163z" />
<glyph unicode="A" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731z" />
<glyph unicode="B" horiz-adv-x="1257" d="M199 0v1384h395q125 0 210 -19.5t137 -58.5t74.5 -97t22.5 -136q0 -67 -14 -118.5t-41.5 -90t-67 -65t-90.5 -43.5q65 -9 121 -33.5t97 -67t64 -103.5t23 -144q0 -107 -34 -184t-99.5 -127t-162 -73.5t-220.5 -23.5h-415zM334 123h219q102 0 182.5 11t136.5 41.5 t85.5 86.5t29.5 146q0 86 -28 137.5t-80 79.5t-124.5 36.5t-162.5 8.5h-258v-547zM334 791h221q177 0 259.5 59.5t82.5 191.5q0 63 -17 105.5t-56 68.5t-103 37t-158 11h-229v-473z" />
<glyph unicode="C" horiz-adv-x="1315" d="M145 692q0 174 34 308.5t105 226t180.5 139t260.5 47.5q97 0 173 -19t133.5 -54t100 -84t74.5 -109l-116 -74q-26 48 -58 87.5t-75.5 68.5t-100 45t-131.5 16q-118 0 -201 -39.5t-135 -116t-76 -187.5t-24 -255t24 -255t77 -187.5t137 -116t204 -39.5q84 0 145.5 20 t105.5 52t74.5 71.5t53.5 79.5l115 -71q-33 -59 -75 -109t-100 -87t-135.5 -58t-181.5 -21q-302 0 -445 181t-143 540z" />
<glyph unicode="D" horiz-adv-x="1282" d="M186 0v1384h324q163 0 282.5 -35t198.5 -116t117.5 -213.5t38.5 -327.5q0 -203 -41.5 -336.5t-122 -212.5t-199 -111t-272.5 -32h-326zM322 123h176q136 0 232 28.5t156 95.5t87.5 176.5t27.5 270.5q0 157 -26.5 265.5t-86 176t-155.5 97t-235 29.5h-176v-1139z" />
<glyph unicode="E" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819z" />
<glyph unicode="F" horiz-adv-x="1110" d="M199 0v1384h811v-122h-676v-461h577v-123h-577v-678h-135z" />
<glyph unicode="G" horiz-adv-x="1378" d="M145 694q0 167 31 300t100 226t179 143t268 50q98 0 173 -19.5t131 -55t97 -84.5t72 -107l-115 -74q-27 53 -60.5 93.5t-77.5 68t-100 41.5t-126 14q-113 0 -194 -37.5t-133 -112.5t-76.5 -187t-24.5 -261q0 -140 23 -251t76 -188t139.5 -118t213.5 -41q42 0 81 4.5 t77 14t77.5 24t82.5 33.5v389h-369v123h504v-588q-58 -30 -109.5 -53t-104.5 -38.5t-112 -23.5t-131 -8q-164 0 -276.5 50.5t-183 144.5t-101.5 227.5t-31 300.5z" />
<glyph unicode="H" horiz-adv-x="1341" d="M199 0v1384h135v-606h674v606h135v-1384h-135v655h-674v-655h-135z" />
<glyph unicode="I" horiz-adv-x="719" d="M102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="J" horiz-adv-x="864" d="M66 18l51 119q17 -9 40.5 -17t49.5 -14.5t52.5 -10t49.5 -3.5q70 0 113.5 21.5t67.5 66t32 112.5t8 161v931h136v-989q0 -104 -18 -183.5t-59.5 -133.5t-110 -81.5t-169.5 -27.5q-31 0 -64.5 4t-65.5 10.5t-61.5 15.5t-51.5 19z" />
<glyph unicode="K" horiz-adv-x="1255" d="M199 0v1384h135v-739l661 739h170l-587 -649l612 -735h-176l-527 639l-153 -164v-475h-135z" />
<glyph unicode="L" horiz-adv-x="1038" d="M199 0v1384h135v-1261h649v-123h-784z" />
<glyph unicode="M" horiz-adv-x="1556" d="M199 0v1384h190l391 -806l389 806h189v-1384h-131v1219l-406 -828h-90l-401 828v-1219h-131z" />
<glyph unicode="N" horiz-adv-x="1374" d="M199 0v1384h196l647 -1165v1165h134v-1384h-160l-686 1235v-1235h-131z" />
<glyph unicode="O" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5z" />
<glyph unicode="P" horiz-adv-x="1153" d="M199 0v1384h383q238 0 350 -107.5t112 -324.5q0 -126 -29 -214t-88.5 -143.5t-149.5 -80.5t-212 -25h-231v-489h-135zM334 612h209q93 0 160 15t110.5 52.5t64.5 102.5t21 166q0 90 -22.5 150.5t-65 96.5t-103.5 51.5t-139 15.5h-235v-650z" />
<glyph unicode="Q" horiz-adv-x="1364" d="M135 692q0 169 30 303t96 227t170.5 142t252.5 49q144 0 247.5 -47.5t169.5 -139.5t97 -226t31 -308q0 -156 -25 -282t-80.5 -218t-143.5 -148t-214 -71q14 -39 35.5 -70.5t53.5 -53.5t75.5 -34t101.5 -12q17 0 38.5 2t43.5 6t42.5 9t35.5 10l41 -113q-48 -18 -102.5 -26 t-102.5 -8q-87 0 -154.5 19.5t-118 56.5t-85 91t-56.5 123q-121 11 -211 59.5t-149.5 137t-89 218.5t-29.5 304zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5t188.5 39.5t124 115.5t68 187.5t20.5 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5 q-112 0 -189 -39.5t-124.5 -115.5t-68.5 -187.5t-21 -255.5z" />
<glyph unicode="R" horiz-adv-x="1212" d="M199 0v1384h393q114 0 200.5 -20t145.5 -65.5t89 -119t30 -180.5q0 -92 -19.5 -159.5t-57 -114.5t-92 -75.5t-124.5 -43.5l377 -606h-162l-354 586h-291v-586h-135zM334 707h250q94 0 157 15.5t101 49.5t54.5 88.5t16.5 132.5q0 73 -17 124.5t-55 84t-99.5 47.5 t-151.5 15h-256v-557z" />
<glyph unicode="S" horiz-adv-x="1225" d="M111 248l116 69q20 -40 52 -79.5t78 -71.5t107.5 -52t141.5 -20q73 0 136.5 15t110.5 47t74 81.5t27 118.5q0 64 -21 108.5t-64 77t-109 56.5t-156 47q-120 31 -207 60.5t-144 71t-84.5 101t-27.5 150.5q0 86 28 157t84.5 121.5t141.5 78.5t199 28q86 0 156 -17.5 t126 -50t100 -78.5t79 -104l-113 -76q-26 45 -59 82.5t-75 64.5t-94.5 41.5t-117.5 14.5q-79 0 -138 -18t-98 -51t-58 -80t-19 -105q0 -56 17.5 -93.5t58.5 -65t109 -50t169 -47.5q107 -27 192 -58t144.5 -77t91 -113.5t31.5 -169.5q0 -107 -38 -181t-103 -121t-153 -68 t-188 -21q-105 0 -184 21t-138.5 57.5t-103 87.5t-77.5 111z" />
<glyph unicode="T" horiz-adv-x="1174" d="M43 1262v122h1085v-122h-475v-1262h-135v1262h-475z" />
<glyph unicode="U" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283z" />
<glyph unicode="V" horiz-adv-x="1214" d="M63 1384h142l401 -1241l406 1241h139l-463 -1384h-170z" />
<glyph unicode="W" horiz-adv-x="1718" d="M80 1384h137l277 -1202l278 1202h168l287 -1212l278 1212h133l-325 -1384h-176l-281 1204l-283 -1204h-170z" />
<glyph unicode="X" horiz-adv-x="1169" d="M66 0l444 694l-432 690h155l357 -585l362 585h152l-440 -686l440 -698h-156l-364 594l-371 -594h-147z" />
<glyph unicode="Y" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530z" />
<glyph unicode="Z" horiz-adv-x="1171" d="M102 0v129l779 1133h-748v122h905v-122l-784 -1139h801v-123h-953z" />
<glyph unicode="[" horiz-adv-x="825" d="M215 -395v1884h457v-107h-338v-1673h338v-104h-457z" />
<glyph unicode="\" horiz-adv-x="952" d="M82 1520h125l727 -1819h-123z" />
<glyph unicode="]" horiz-adv-x="825" d="M154 -291h335v1673h-335v107h456v-1884h-456v104z" />
<glyph unicode="^" horiz-adv-x="1214" d="M154 594l389 790h129l389 -790h-121l-332 676l-334 -676h-120z" />
<glyph unicode="_" horiz-adv-x="1024" d="M-10 -164h1044v-92h-1044v92z" />
<glyph unicode="`" horiz-adv-x="1106" d="M326 1569h176l186 -361h-104z" />
<glyph unicode="a" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="b" horiz-adv-x="1151" d="M182 0v1489h129v-555q31 31 67.5 58t77 46t84.5 30t89 11q107 0 182 -42.5t122 -116.5t68 -173.5t21 -214.5q0 -123 -24 -226.5t-74 -178.5t-126.5 -116.5t-181.5 -41.5q-78 0 -157.5 36t-147.5 99v-104h-129zM311 225q69 -65 145.5 -104t147.5 -39q62 0 114.5 26 t90.5 80.5t59 138.5t21 201q0 101 -16 182t-50 137.5t-87 87t-128 30.5q-78 0 -153.5 -43t-143.5 -111v-586z" />
<glyph unicode="c" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q124 0 207.5 -49t140.5 -151l-106 -64q-21 39 -45 67.5t-53.5 47t-65.5 28t-82 9.5q-157 0 -228 -114t-71 -337q0 -98 15.5 -178t51 -137.5t94 -89t144.5 -31.5q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65 q-25 -47 -58 -84t-77 -62.5t-99.5 -39t-124.5 -13.5q-123 0 -206.5 42t-135 115.5t-74 174.5t-22.5 219z" />
<glyph unicode="d" horiz-adv-x="1151" d="M129 516q0 109 23.5 210.5t73 180t126 125.5t183.5 47q90 0 163 -33.5t142 -87.5v531h129v-1489h-129v115q-32 -31 -69.5 -57.5t-78.5 -46t-85 -31t-89 -11.5q-98 0 -171 37t-121.5 107.5t-72.5 172t-24 230.5zM262 520q0 -99 15 -180t47.5 -138t83.5 -88.5t124 -31.5 q43 0 84.5 12.5t80.5 34t75 49.5t68 60v600q-75 60 -148 93.5t-145 33.5q-65 0 -118 -30.5t-90 -87.5t-57 -139.5t-20 -187.5z" />
<glyph unicode="e" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5z" />
<glyph unicode="f" horiz-adv-x="618" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164z" />
<glyph unicode="g" horiz-adv-x="1151" d="M129 535q0 114 24 213t74.5 172.5t128 116t185.5 42.5q83 0 158 -32.5t141 -88.5v91h129v-1026q0 -111 -24 -190.5t-73.5 -130t-125.5 -74t-181 -23.5q-127 0 -220 29.5t-148 72.5l55 100q51 -42 128 -68t185 -26q75 0 127 17t85 53.5t48 94t15 138.5v127 q-30 -29 -66.5 -55t-78 -45.5t-86.5 -31t-93 -11.5q-101 0 -174 36t-120 104.5t-70 168t-23 226.5zM262 539q0 -79 9 -155.5t38 -136.5t83 -97t143 -37q46 0 88.5 13.5t81 35.5t72.5 49.5t63 54.5v574q-73 57 -143.5 91t-145.5 34q-76 0 -130.5 -31t-90 -87.5t-52 -135 t-16.5 -172.5z" />
<glyph unicode="h" horiz-adv-x="1137" d="M182 0v1489h129v-606q44 41 89 77t91.5 62.5t93.5 41.5t95 15q84 0 139 -25t87 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 89 -8 148t-28 94t-54.5 49t-86.5 14q-69 0 -160 -51.5t-186 -142.5v-762h-129z" />
<glyph unicode="i" horiz-adv-x="494" d="M156 1305q0 45 20 65.5t70 20.5q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5q-51 0 -70.5 23t-19.5 65zM182 0v1049h129v-1049h-129z" />
<glyph unicode="j" horiz-adv-x="508" d="M-141 -365l32 107q36 -14 73 -21.5t79 -7.5q43 0 72 14t46 44t24.5 76.5t7.5 111.5v1090h129v-1104q0 -86 -13.5 -149.5t-46 -106t-87.5 -63.5t-138 -21q-40 0 -86 7.5t-92 22.5zM166 1305q0 45 21.5 65.5t70.5 20.5q51 0 71.5 -20t20.5 -66q0 -51 -22 -69.5t-70 -18.5 q-53 0 -72.5 23t-19.5 65z" />
<glyph unicode="k" horiz-adv-x="1022" d="M182 0v1489h129v-973l469 533h160l-426 -471l449 -578h-162l-371 489l-119 -131v-358h-129z" />
<glyph unicode="l" horiz-adv-x="518" d="M195 0v1489h129v-1489h-129z" />
<glyph unicode="m" horiz-adv-x="1673" d="M182 0v1049h129v-166q39 42 80 78t82.5 62t84.5 41t87 15q106 0 167.5 -50.5t80.5 -160.5q44 48 85 87t83.5 66.5t87.5 42.5t96 15q80 0 129.5 -28t77.5 -78.5t37.5 -120t9.5 -152.5v-700h-129v645q0 94 -6 154.5t-23 95.5t-46.5 48t-75.5 13q-40 0 -77.5 -14 t-75.5 -39.5t-77.5 -61t-83.5 -79.5v-762h-129v651q0 93 -7 152.5t-24 93t-47.5 46.5t-76.5 13q-38 0 -77 -16t-78 -43t-78 -62t-77 -73v-762h-129z" />
<glyph unicode="n" horiz-adv-x="1137" d="M182 0v1049h129v-166q45 43 90.5 79t92 62t93.5 40.5t95 14.5q84 0 138 -25t86 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 88 -8 147t-28 94t-54.5 49.5t-86.5 14.5q-69 0 -160 -51.5t-186 -142.5v-762h-129z" />
<glyph unicode="o" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="p" horiz-adv-x="1151" d="M182 -395v1444h129v-115q31 31 67.5 58t77 46t84.5 30t89 11q106 0 180.5 -42.5t121.5 -116.5t69 -173.5t22 -214.5q0 -123 -25 -226.5t-76 -178.5t-128.5 -116.5t-182.5 -41.5q-77 0 -153.5 34.5t-145.5 100.5v-499h-129zM311 225q69 -65 143.5 -104t145.5 -39 q62 0 115 26t91.5 80.5t60.5 138.5t22 201q0 101 -16.5 182t-51 137.5t-87.5 87t-126 30.5q-80 0 -154.5 -42.5t-142.5 -111.5v-586z" />
<glyph unicode="q" horiz-adv-x="1151" d="M129 516q0 109 22.5 210.5t71 180t124.5 125.5t183 47q90 0 166 -35t144 -86v91h129v-1444h-129v510q-32 -31 -69.5 -57.5t-78.5 -46t-85 -31t-89 -11.5q-100 0 -173 37t-121 107.5t-71.5 172t-23.5 230.5zM262 520q0 -98 14.5 -179t46.5 -138.5t83.5 -89t125.5 -31.5 q43 0 84 12.5t80 33.5t75 49.5t69 60.5v600q-75 60 -150 93.5t-147 33.5q-65 0 -117 -30.5t-88.5 -87.5t-56 -139.5t-19.5 -187.5z" />
<glyph unicode="r" horiz-adv-x="797" d="M182 0v1049h129v-181q45 45 85.5 81.5t81 62t82 39.5t87.5 14q29 0 53 -5t45 -16l-28 -122q-35 14 -76 14q-48 0 -87.5 -12t-77.5 -36t-77.5 -59.5t-87.5 -83.5v-745h-129z" />
<glyph unicode="s" horiz-adv-x="973" d="M117 154l104 65q35 -63 98.5 -101t163.5 -38q52 0 97 8.5t78 29.5t52 56.5t19 89.5q0 42 -12 72.5t-42.5 54t-82.5 42.5t-133 40q-84 22 -144.5 47t-100 60.5t-58.5 85t-19 120.5q0 58 21.5 111.5t66 93.5t111.5 64t158 24q69 0 123.5 -15t96.5 -40.5t72 -59.5t50 -71 l-105 -62q-15 28 -36.5 53t-50 43.5t-65.5 29t-85 10.5q-107 0 -168.5 -47t-61.5 -132q0 -41 11 -70t37 -50.5t70.5 -38.5t111.5 -35q101 -27 170.5 -55t112 -65t61 -86.5t18.5 -119.5q0 -74 -25.5 -130t-74 -93.5t-118 -56.5t-157.5 -19q-81 0 -142 17.5t-105.5 44.5 t-73 59.5t-43.5 63.5z" />
<glyph unicode="t" horiz-adv-x="723" d="M55 938v111h158v292h129v-292h276v-111h-276v-606q0 -73 7 -122t24.5 -78t47.5 -41.5t77 -12.5q35 0 76.5 8.5t70.5 19.5l33 -104q-40 -14 -89 -23.5t-100 -9.5q-78 0 -131 19.5t-85 61.5t-46 108t-14 159v621h-158z" />
<glyph unicode="u" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5z" />
<glyph unicode="v" horiz-adv-x="991" d="M57 1049h138l303 -891l301 891h133l-369 -1049h-137z" />
<glyph unicode="w" horiz-adv-x="1430" d="M82 1049h133l186 -861l258 861h117l262 -861l181 861h129l-244 -1049h-125l-264 870l-264 -870h-125z" />
<glyph unicode="x" horiz-adv-x="965" d="M59 0l351 522l-344 527h151l270 -431l273 431h143l-344 -519l344 -530h-155l-269 432l-276 -432h-144z" />
<glyph unicode="y" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5z" />
<glyph unicode="z" horiz-adv-x="936" d="M94 0v98l576 840h-564v111h719v-97l-577 -841h594v-111h-748z" />
<glyph unicode="{" horiz-adv-x="975" d="M102 508v110h19q85 0 144 22.5t95.5 68t53 113.5t16.5 159v170q0 87 27.5 155.5t78 116t121.5 72.5t158 25h59v-105h-47q-137 0 -206.5 -71t-69.5 -211v-175q0 -173 -70.5 -267.5t-199.5 -129.5q129 -32 199.5 -127t70.5 -268v-176q0 -142 64.5 -212.5t211.5 -70.5h47 v-102h-59q-91 0 -162.5 23.5t-121 70t-75.5 115.5t-26 159v170q0 88 -16 156.5t-52 114.5t-95 70t-146 24h-19z" />
<glyph unicode="|" horiz-adv-x="850" d="M367 -395v1915h116v-1915h-116z" />
<glyph unicode="}" horiz-adv-x="975" d="M100 -293h45q148 0 213.5 70.5t65.5 212.5v176q0 173 69.5 268t200.5 127q-129 35 -199.5 129.5t-70.5 267.5v175q0 140 -69.5 211t-209.5 71h-45v105h60q90 0 161 -25.5t120.5 -73.5t75.5 -116.5t26 -153.5v-170q0 -91 16.5 -159t53 -113.5t96 -68t145.5 -22.5h18v-110 h-18q-87 0 -146.5 -24t-96 -70t-52.5 -114.5t-16 -156.5v-170q0 -90 -26 -159t-75 -115.5t-120.5 -70t-161.5 -23.5h-60v102z" />
<glyph unicode="~" horiz-adv-x="1427" d="M164 631v125q85 68 159 98.5t136 30.5q61 0 127.5 -24.5t134 -54.5t132.5 -54.5t122 -24.5q39 0 75.5 11t72 29.5t70.5 44.5t71 56v-129q-29 -22 -60.5 -44t-67 -39.5t-75 -28.5t-84.5 -11q-40 0 -84.5 11.5t-91 29.5t-93.5 38t-91.5 38t-84.5 29.5t-73 11.5 q-41 0 -78.5 -11t-73.5 -30.5t-71 -45.5t-72 -56z" />
<glyph unicode="&#xa1;" d="M168 987q0 51 25.5 71.5t76.5 20.5q30 0 49.5 -6.5t31 -18.5t16 -29t4.5 -38q0 -49 -22.5 -70.5t-78.5 -21.5q-55 0 -78.5 21.5t-23.5 70.5zM195 -395l20 1093h107l22 -1093h-149z" />
<glyph unicode="&#xa2;" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q33 0 68 -6l45 215h98l-51 -237q60 -22 106.5 -64.5t81.5 -107.5l-106 -64q-23 42 -49 71t-58 48l-180 -852q11 0 23 -1t24 -1q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65q-25 -47 -58 -84t-77 -62.5 t-99.5 -39t-124.5 -13.5q-18 0 -36 1t-35 3l-50 -233h-96l53 254q-76 24 -128 73.5t-84.5 118t-47 153.5t-14.5 181zM262 516q0 -152 37.5 -257t128.5 -150l180 854q-12 3 -24.5 3.5t-24.5 0.5q-155 0 -226 -114t-71 -337z" />
<glyph unicode="&#xa3;" horiz-adv-x="1255" d="M119 0v117q54 11 91 55.5t60.5 109.5t34 144.5t10.5 161.5h-172v104h168q-2 32 -12.5 68.5t-22 79t-21 92t-9.5 106.5q0 94 35 164t96.5 117t143.5 70.5t177 23.5q63 0 121.5 -11.5t111 -36.5t97.5 -65t82 -98l-111 -72q-47 74 -122.5 121t-178.5 47q-77 0 -135.5 -19.5 t-98 -55.5t-59.5 -86t-20 -111q0 -46 8.5 -91t20 -87t22 -81.5t13.5 -74.5h378v-104h-374q0 -164 -40.5 -286t-127.5 -185h850v-117h-1016z" />
<glyph unicode="&#xa4;" horiz-adv-x="1255" d="M137 1004l72 71l188 -188q51 40 109.5 60t120.5 20t120 -19t109 -59l188 186l72 -71l-186 -189q40 -51 59 -109t19 -120t-21 -119.5t-59 -108.5l186 -190l-70 -70l-190 187q-53 -41 -109 -58.5t-118 -17.5t-119.5 19.5t-108.5 56.5l-188 -187l-72 70l189 190 q-39 50 -58.5 108t-19.5 120t18.5 120.5t57.5 106.5zM362 586q0 -56 20.5 -104.5t56 -85.5t84 -58t104.5 -21q57 0 106 21t85.5 58t57.5 85.5t21 104.5q0 55 -20.5 104.5t-56.5 86.5t-85.5 59t-107.5 22q-57 0 -105.5 -21.5t-84 -58.5t-55.5 -86.5t-20 -105.5z" />
<glyph unicode="&#xa5;" horiz-adv-x="1255" d="M76 1384h151l404 -667l401 667h148l-412 -667h352v-99h-407l-19 -28v-135h426v-97h-426v-358h-135v358h-422v97h422v131l-20 32h-402v99h348z" />
<glyph unicode="&#xa6;" horiz-adv-x="850" d="M367 221h116v-616h-116v616zM367 903v617h116v-617h-116z" />
<glyph unicode="&#xa7;" horiz-adv-x="1067" d="M117 545q0 52 19 97t53.5 85t82 75.5t103.5 69.5q-51 34 -86.5 65t-58.5 62.5t-33.5 64.5t-10.5 71q0 60 23 111t69 88t116 58t165 21q67 0 122.5 -10t100.5 -29t80.5 -45.5t63.5 -60.5l-99 -76q-17 22 -42 42t-58 35.5t-74 24.5t-90 9q-118 0 -179.5 -39.5t-61.5 -124.5 q0 -31 11 -57t43.5 -55.5t90.5 -67t151 -91.5q82 -47 144 -89t104 -85.5t63 -91t21 -104.5q0 -49 -14 -90t-44.5 -79t-79.5 -75.5t-118 -79.5q55 -36 92.5 -68.5t60.5 -64t32.5 -63.5t9.5 -66q0 -71 -27 -123t-76.5 -87t-119 -52t-154.5 -17q-127 0 -220.5 39t-144.5 105 l97 76q32 -35 66.5 -56.5t69 -33.5t67 -16.5t61.5 -4.5q67 0 113.5 11t76 32t43 52t13.5 71q0 32 -13 59t-46.5 56.5t-92 66t-149.5 88.5q-75 42 -137 84t-106.5 86.5t-68.5 92.5t-24 104zM246 551q0 -40 21.5 -75.5t65 -72t109 -77t154.5 -90.5q62 38 104.5 69t69 60 t38 58.5t11.5 65.5q0 41 -18 75.5t-58.5 71.5t-106.5 79t-163 98q-47 -29 -88.5 -59t-72 -61.5t-48.5 -66.5t-18 -75z" />
<glyph unicode="&#xa8;" horiz-adv-x="1106" d="M281 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM651 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xa9;" horiz-adv-x="1882" d="M135 610q0 115 29 219.5t81 193.5t126 161t163 123t192 78.5t214 27.5q116 0 220.5 -28.5t193.5 -81t161 -126t122.5 -162.5t78 -191.5t27.5 -213.5q0 -116 -28.5 -220.5t-81 -194.5t-125.5 -162.5t-162.5 -123.5t-192 -78.5t-213.5 -27.5q-115 0 -219.5 29t-194 81.5 t-162 126t-123.5 163t-78.5 192.5t-27.5 215zM242 610q0 -98 24.5 -188t70 -168.5t109 -143t141 -110.5t167 -71t186.5 -25t186.5 25.5t167 71.5t141 110.5t109 143t70 168.5t24.5 187q0 145 -54.5 273t-149 223.5t-221.5 151t-273 55.5q-97 0 -186.5 -25t-167 -70.5 t-141 -109.5t-109 -142t-70 -168t-24.5 -188zM584 612q0 214 92 329.5t280 115.5q61 0 110.5 -15t88 -39.5t65.5 -57t44 -66.5l-95 -58q-13 26 -31 51t-43.5 44t-60 30.5t-80.5 11.5q-70 0 -118.5 -22.5t-79 -66.5t-44.5 -108.5t-14 -148.5q0 -86 14 -150.5t44.5 -107.5 t79 -64.5t116.5 -21.5q45 0 81 11.5t64 32t49 47.5t36 59l94 -53q-18 -38 -45.5 -73t-66 -62t-90 -43.5t-118.5 -16.5q-188 0 -280 109t-92 333z" />
<glyph unicode="&#xaa;" horiz-adv-x="754" d="M92 905q0 66 21.5 109t57 69t81.5 38.5t94 17.5l178 12v31q0 76 -40 107.5t-132 31.5q-36 0 -63.5 -7.5t-48 -19.5t-35 -27.5t-23.5 -31.5l-84 51q16 26 38.5 49t53.5 40.5t71.5 27.5t92.5 10q73 0 125 -12.5t85.5 -41t49 -75t15.5 -113.5v-460h-105v88 q-25 -21 -51.5 -40.5t-55 -34t-59 -23.5t-63.5 -9q-52 0 -90.5 15.5t-63.5 44t-37 67.5t-12 86zM201 907q0 -62 25 -92.5t91 -30.5q28 0 55.5 11t53.5 28t51 36.5t47 37.5v168l-139 -12q-91 -7 -137.5 -39.5t-46.5 -106.5z" />
<glyph unicode="&#xab;" horiz-adv-x="1118" d="M76 524l381 471h145l-381 -471l381 -471h-145zM524 524l379 471h146l-379 -471l379 -471h-146z" />
<glyph unicode="&#xac;" horiz-adv-x="1427" d="M178 815v111h1069v-566h-108v455h-961z" />
<glyph unicode="&#xad;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#xae;" horiz-adv-x="1882" d="M135 610q0 115 29 219.5t81 193.5t126 161t163 123t192 78.5t214 27.5q116 0 220.5 -28.5t193.5 -81t161 -126t122.5 -162.5t78 -191.5t27.5 -213.5q0 -116 -28.5 -220.5t-81 -194.5t-125.5 -162.5t-162.5 -123.5t-192 -78.5t-213.5 -27.5q-115 0 -219.5 29t-194 81.5 t-162 126t-123.5 163t-78.5 192.5t-27.5 215zM242 610q0 -98 24.5 -188t70 -168.5t109 -143t141 -110.5t167 -71t186.5 -25t186.5 25.5t167 71.5t141 110.5t109 143t70 168.5t24.5 187q0 145 -54.5 273t-149 223.5t-221.5 151t-273 55.5q-97 0 -186.5 -25t-167 -70.5 t-141 -109.5t-109 -142t-70 -168t-24.5 -188zM668 201v850h264q74 0 130 -13t93.5 -42t56.5 -75t19 -112q0 -57 -13.5 -99t-37.5 -71.5t-58 -48t-75 -27.5l231 -362h-131l-219 350h-150v-350h-110zM778 647h156q49 0 83.5 8.5t56 27t31 49t9.5 75.5q0 81 -44 114t-142 33 h-150v-307z" />
<glyph unicode="&#xaf;" horiz-adv-x="1106" d="M262 1255v111h580v-111h-580z" />
<glyph unicode="&#xb0;" horiz-adv-x="862" d="M166 1241q0 54 21 102t57 83.5t84 56t102 20.5q56 0 104.5 -21t84.5 -56.5t56.5 -83t20.5 -101.5q0 -56 -21.5 -105t-57.5 -85t-84 -57t-101 -21q-54 0 -102.5 21t-85 57t-57.5 85t-21 105zM264 1241q0 -35 13 -66t35.5 -54t53.5 -36.5t66 -13.5t65.5 13.5t53 36t35 53 t12.5 65.5q0 34 -12.5 64.5t-35 53t-53 35.5t-65.5 13q-36 0 -67 -13.5t-53.5 -36t-35 -52.5t-12.5 -62z" />
<glyph unicode="&#xb1;" horiz-adv-x="1427" d="M178 0v111h1069v-111h-1069zM178 799v110h477v477h111v-477h481v-110h-481v-482h-111v482h-477z" />
<glyph unicode="&#xb2;" horiz-adv-x="883" d="M121 1360q17 28 42 57t62.5 52.5t88.5 38t120 14.5q66 0 122 -13.5t97.5 -42t64.5 -73.5t23 -109q0 -46 -12 -85t-30.5 -71t-41 -57t-43.5 -43q-71 -60 -151 -122.5t-180 -133.5h491v-102h-649v106q42 31 88 66.5t90.5 70.5t84 68t67.5 59q47 37 77.5 67t48 57.5 t24.5 55.5t7 62q0 66 -44 101.5t-138 35.5q-78 0 -127.5 -32.5t-83.5 -88.5z" />
<glyph unicode="&#xb3;" horiz-adv-x="883" d="M102 782l97 62q35 -47 90.5 -74t113.5 -27q106 0 156.5 43.5t50.5 124.5q0 75 -46.5 112.5t-155.5 37.5h-93v100h80q105 0 154 38t49 97q0 57 -43.5 91t-134.5 34q-72 0 -123 -25t-92 -83l-96 57q19 31 47 58.5t66.5 48.5t88.5 33t113 12q80 0 137.5 -17t94 -46t54 -68.5 t17.5 -85.5q0 -65 -38 -114.5t-114 -72.5q75 -21 119.5 -75t44.5 -136q0 -129 -87.5 -196.5t-243.5 -67.5q-43 0 -87.5 8.5t-85 25.5t-75 43.5t-58.5 61.5z" />
<glyph unicode="&#xb4;" horiz-adv-x="1106" d="M455 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xb5;" horiz-adv-x="1141" d="M166 -395v1444h131v-832q51 -59 117.5 -92t146.5 -33q76 0 146 42t129 120v795h131v-1049h-121l-10 123q-28 -35 -57.5 -63t-63.5 -48.5t-72.5 -31.5t-83.5 -11q-40 0 -74.5 5t-66 16.5t-61 30t-60.5 45.5v-461h-131z" />
<glyph unicode="&#xb6;" horiz-adv-x="1225" d="M68 1079q0 94 35 169.5t97 129t146.5 82.5t183.5 29h623v-107h-195v-1777h-122v1777h-211v-1777h-123v1059q-75 0 -152 23t-139.5 72.5t-102.5 128.5t-40 191z" />
<glyph unicode="&#xb7;" d="M172 745q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5t-20.5 67.5z" />
<glyph unicode="&#xb8;" horiz-adv-x="1106" d="M266 -348l39 80q18 -7 40.5 -13.5t47.5 -12t51 -8.5t52 -3q68 0 102.5 25t34.5 71q0 29 -14 50t-39 35.5t-59.5 22t-76.5 9.5l56 106h86l-25 -49q90 -18 133 -63.5t43 -114.5q0 -45 -18.5 -79.5t-51.5 -57t-77.5 -34t-95.5 -11.5q-32 0 -66 4.5t-65.5 11t-57 15 t-39.5 16.5z" />
<glyph unicode="&#xb9;" horiz-adv-x="883" d="M182 1249v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18z" />
<glyph unicode="&#xba;" horiz-adv-x="817" d="M106 1051q0 78 16 144.5t52 115t94 75.5t142 27q82 0 139 -28t92.5 -76.5t51.5 -115t16 -142.5q0 -77 -16 -142.5t-51.5 -113.5t-92.5 -75.5t-139 -27.5q-83 0 -141 27.5t-94 75.5t-52.5 113.5t-16.5 142.5zM217 1051q0 -54 7 -102.5t27.5 -85t58 -58t98.5 -21.5 q60 0 97.5 21.5t58.5 58t28.5 85t7.5 102.5t-7.5 102.5t-28.5 86t-58.5 59.5t-97.5 22q-62 0 -99.5 -22t-57.5 -59.5t-27 -86t-7 -102.5z" />
<glyph unicode="&#xbb;" horiz-adv-x="1118" d="M70 53l379 471l-379 471h145l379 -471l-379 -471h-145zM516 53l381 471l-381 471h146l380 -471l-380 -471h-146z" />
<glyph unicode="&#xbc;" horiz-adv-x="1870" d="M171 1133v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18zM457 -51l801 1487h122l-804 -1487h-119zM1028 185v96l495 549h95v-547h133v-98h-133v-190h-119v190h-471zM1165 283h334v371z" />
<glyph unicode="&#xbd;" horiz-adv-x="1870" d="M97 1133v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18zM373 -51l801 1487h122l-804 -1487h-119zM1094 683q17 28 42 57t62.5 52.5t88.5 38t120 14.5q66 0 122 -13.5t97.5 -42t64.5 -73.5t23 -109q0 -46 -12 -85 t-30.5 -71t-41 -57t-43.5 -43q-71 -60 -151 -122.5t-180 -133.5h491v-102h-649v106q42 31 88 66.5t90.5 70.5t84 68t67.5 59q47 37 77.5 67t48 57.5t24.5 55.5t7 62q0 66 -44 101.5t-138 35.5q-78 0 -127.5 -32.5t-83.5 -88.5z" />
<glyph unicode="&#xbe;" horiz-adv-x="1870" d="M133 666l97 62q35 -47 90.5 -74t113.5 -27q106 0 156.5 43.5t50.5 124.5q0 75 -46.5 112.5t-155.5 37.5h-93v100h80q105 0 154 38t49 97q0 57 -43.5 91t-134.5 34q-72 0 -123 -25t-92 -83l-96 57q19 31 47 58.5t66.5 48.5t88.5 33t113 12q80 0 137.5 -17t94 -46t54 -68.5 t17.5 -85.5q0 -65 -38 -114.5t-114 -72.5q75 -21 119.5 -75t44.5 -136q0 -129 -87.5 -196.5t-243.5 -67.5q-43 0 -87.5 8.5t-85 25.5t-75 43.5t-58.5 61.5zM561 -51l801 1487h122l-804 -1487h-119zM1088 183v96l495 549h95v-547h133v-98h-133v-190h-119v190h-471zM1225 281 h334v371z" />
<glyph unicode="&#xbf;" horiz-adv-x="1036" d="M127 -27q0 89 29 160t83 132t130.5 115t171.5 109v218h131v-275q-115 -65 -192.5 -118.5t-124 -105t-66 -105.5t-19.5 -121q0 -121 74 -188.5t217 -67.5q58 0 103.5 11.5t80 30.5t58.5 44t39 51l108 -72q-21 -38 -56.5 -72t-84 -59.5t-110 -40t-136.5 -14.5 q-93 0 -173 22t-138.5 67.5t-91.5 114.5t-33 164zM504 983q0 53 25 72.5t77 19.5q58 0 79.5 -24.5t21.5 -67.5q0 -49 -23.5 -70.5t-77.5 -21.5q-57 0 -79.5 21.5t-22.5 70.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM371 1905h176l186 -361h-104zM381 522h493l-247 731z" />
<glyph unicode="&#xc1;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731zM535 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xc2;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM314 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM381 522h493l-247 731z" />
<glyph unicode="&#xc3;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM266 1550q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35 t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM381 522h493l-247 731z" />
<glyph unicode="&#xc4;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM357 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM381 522h493l-247 731zM727 1636q0 45 18.5 67t69.5 22 q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xc5;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731zM449 1677q0 39 10.5 72.5t32.5 57.5t56 37.5t81 13.5q94 0 138 -49.5t44 -131.5q0 -40 -11 -73t-33.5 -57t-56.5 -37t-81 -13q-49 0 -83.5 14t-56 38.5t-31 57t-9.5 70.5z M529 1677q0 -46 22 -75t78 -29q54 0 77 27.5t23 76.5q0 103 -100 103q-48 0 -74 -26.5t-26 -76.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="1714" d="M57 0l521 1384h999v-122h-623v-467h555v-123h-555v-549h623v-123h-758v393h-477l-145 -393h-140zM387 516h432v746h-157z" />
<glyph unicode="&#xc7;" horiz-adv-x="1315" d="M145 692q0 176 34 310.5t105 226t180.5 138t260.5 46.5q97 0 173 -19t133.5 -54t100 -84t74.5 -109l-116 -74q-26 48 -58 87.5t-75.5 68.5t-100 45t-131.5 16q-118 0 -201 -39.5t-135 -116t-76 -187.5t-24 -255t24 -255t77 -187.5t137 -116t204 -39.5q84 0 145.5 20 t105.5 52t74.5 71.5t53.5 79.5l115 -71q-32 -58 -73 -107t-96.5 -86t-129.5 -58.5t-172 -23.5v-2q89 -18 132.5 -63.5t43.5 -114.5q0 -45 -19 -79.5t-52 -57t-77.5 -34t-95.5 -11.5q-32 0 -65.5 4.5t-64.5 11t-56.5 15t-40.5 16.5l39 80q37 -14 88 -25.5t102 -11.5 q69 0 103 25t34 71q0 29 -13.5 50t-38.5 35.5t-59 22t-75 9.5l31 61q-271 19 -398 199.5t-127 519.5z" />
<glyph unicode="&#xc8;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM357 1905h176l186 -361h-104z" />
<glyph unicode="&#xc9;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM498 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xca;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM291 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xcb;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM330 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM700 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68 q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xcc;" horiz-adv-x="719" d="M91 1905h176l186 -361h-104zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="&#xcd;" horiz-adv-x="719" d="M102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514zM280 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xce;" horiz-adv-x="719" d="M48 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="&#xcf;" horiz-adv-x="719" d="M92 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514zM462 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68 q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xd0;" horiz-adv-x="1325" d="M63 641v109h130v634h331q169 0 293.5 -35t206 -116t121 -213.5t39.5 -327.5q0 -203 -43 -336.5t-127 -212.5t-207 -111t-283 -32h-331v641h-130zM328 123h184q142 0 242.5 28.5t164 95.5t92.5 176.5t29 270.5q0 157 -28 265.5t-91 176t-163.5 97t-245.5 29.5h-184v-512 h338v-109h-338v-518z" />
<glyph unicode="&#xd1;" horiz-adv-x="1374" d="M199 0v1384h196l647 -1165v1165h134v-1384h-160l-686 1235v-1235h-131zM315 1570q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35 t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xd2;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM461 1905h176l186 -361h-104z" />
<glyph unicode="&#xd3;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM586 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xd4;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM369 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xd5;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM321 1550q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94 q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xd6;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM412 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM782 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xd7;" horiz-adv-x="1427" d="M242 197l391 391l-391 393l80 78l389 -393l391 393l78 -78l-392 -393l392 -391l-78 -78l-391 391l-389 -391z" />
<glyph unicode="&#xd8;" horiz-adv-x="1364" d="M63 -115l195 281q-66 93 -94.5 225.5t-28.5 300.5q0 166 29.5 299.5t94.5 227t169 144t254 50.5q118 0 206.5 -31t151.5 -90l140 197h116l-190 -272q65 -94 94 -226t29 -299t-29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50q-118 0 -206.5 30.5t-151.5 90.5l-144 -207 h-117zM279 692q0 -127 16 -226.5t51 -174.5l617 887q-48 55 -117.5 83.5t-163.5 28.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM401 205q51 -56 118 -83.5t163 -27.5q111 0 188 39.5t124 115.5t68 187.5t21 255.5q0 124 -16 222.5t-51 172.5z" />
<glyph unicode="&#xd9;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM445 1905h176l186 -361h-104z " />
<glyph unicode="&#xda;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM607 1544l186 361h178l-260 -361 h-104z" />
<glyph unicode="&#xdb;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM379 1544l229 361h168l229 -361 h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xdc;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM420 1636q0 45 18.5 67t69.5 22 q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM790 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xdd;" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530zM480 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xde;" horiz-adv-x="1153" d="M199 0v1384h135v-223h248q238 0 350 -107.5t112 -322.5q0 -127 -29 -215.5t-88.5 -144t-149.5 -80.5t-212 -25h-231v-266h-135zM334 389h209q93 0 160 15t110 53t63.5 103t20.5 165q0 91 -22 151t-64 96t-103 51t-139 15h-235v-649z" />
<glyph unicode="&#xdf;" horiz-adv-x="1149" d="M182 0v1040q0 103 14.5 191t56 152t115 100.5t191.5 36.5q81 0 147 -18.5t112.5 -58t71.5 -100.5t25 -145t-20 -143.5t-56 -99.5t-85.5 -60.5t-108.5 -26.5q186 -15 280.5 -121.5t94.5 -295.5q0 -102 -20.5 -190.5t-67 -153t-122 -101.5t-185.5 -37q-50 0 -102.5 9.5 t-100.5 23.5v123q46 -20 100.5 -31.5t98.5 -11.5q73 0 123 26t81.5 74.5t45.5 118.5t14 158q0 96 -27 161t-82 105t-137 57t-193 17v114q85 0 149 14t106.5 46t63.5 84.5t21 130.5q0 111 -55 165t-176 54q-71 0 -118 -22t-75 -66.5t-39.5 -112t-11.5 -157.5v-1049h-129z" />
<glyph unicode="&#xe0;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM288 1569 h176l186 -361h-104z" />
<glyph unicode="&#xe1;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM419 1208 l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xe2;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM204 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18 q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="&#xe3;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM162 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5 q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="&#xe4;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM241 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM254 299 q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM611 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xe5;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM329 1339 q0 39 10.5 72.5t32.5 57.5t56 37.5t81 13.5q94 0 138 -49.5t44 -131.5q0 -40 -11 -73t-33.5 -57t-56.5 -37t-81 -13q-49 0 -83.5 14t-56 38.5t-31 57t-9.5 70.5zM409 1339q0 -46 22 -75t78 -29q54 0 77 27.5t23 76.5q0 103 -100 103q-48 0 -74 -26.5t-26 -76.5z" />
<glyph unicode="&#xe6;" horiz-adv-x="1694" d="M121 299q0 84 25.5 144t77.5 101t130.5 64.5t184.5 32.5l237 21v59q0 69 -18 116t-53 76t-86 41.5t-117 12.5q-101 0 -163.5 -36.5t-94.5 -92.5l-103 63q25 40 56.5 73t75 56t102 36t137.5 13q63 0 118 -9.5t100 -30.5t79 -54.5t55 -81.5q47 81 130 128.5t198 47.5 q108 0 182.5 -32.5t120.5 -93t66 -148t20 -197.5v-84h-676q0 -95 12.5 -176t46 -140.5t91.5 -93.5t149 -34q45 0 81 9.5t66 28t56 45.5t51 62l103 -67q-28 -45 -60.5 -80t-74.5 -59t-96 -37t-124 -13q-127 0 -220 48.5t-142 142.5q-45 -37 -96 -71.5t-106.5 -61t-115 -42.5 t-123.5 -16q-68 0 -120.5 24t-88.5 67.5t-54.5 104.5t-18.5 134zM254 295q0 -109 49.5 -161t134.5 -52q48 0 94 13.5t91 37t90.5 55t91.5 68.5q-16 48 -22.5 125.5t-6.5 173.5l-188 -16q-86 -7 -149 -21.5t-104 -42.5t-61 -71.5t-20 -108.5zM907 629h547q-3 175 -65.5 258.5 t-198.5 83.5q-62 0 -112 -20.5t-87 -62.5t-58.5 -106.5t-25.5 -152.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q124 0 207.5 -49t140.5 -151l-106 -64q-21 37 -44.5 65t-53 47.5t-66.5 29.5t-84 10q-155 0 -226 -114t-71 -337q0 -98 15.5 -178t51 -137.5t94 -89t144.5 -31.5q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65 q-48 -89 -128 -142t-206 -57l-2 -4q90 -17 133 -61t43 -113q0 -45 -19 -79.5t-52 -58t-77.5 -35t-95.5 -11.5q-32 0 -65.5 4.5t-64.5 11.5t-56.5 15.5t-40.5 17.5l39 78q37 -14 88 -25.5t102 -11.5q69 0 103.5 26t34.5 72q0 28 -14 49t-38.5 34.5t-59 20.5t-75.5 9l31 65 q-105 10 -177.5 55t-116.5 117t-63.5 168t-19.5 207z" />
<glyph unicode="&#xe8;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM292 1569h176l186 -361h-104z" />
<glyph unicode="&#xe9;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM454 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xea;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM231 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5z" />
<glyph unicode="&#xeb;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM272 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM642 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xec;" horiz-adv-x="494" d="M-23 1569h176l186 -361h-104zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xed;" horiz-adv-x="494" d="M157 1208l186 361h178l-260 -361h-104zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xee;" horiz-adv-x="494" d="M-66 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xef;" horiz-adv-x="494" d="M-35 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM182 0v1049h129v-1049h-129zM335 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25 t-17.5 65z" />
<glyph unicode="&#xf0;" horiz-adv-x="1141" d="M129 508q0 137 30 239t85.5 169t133.5 100t173 33q62 0 128.5 -21t123.5 -72q-28 85 -86.5 176.5t-143.5 172.5l-200 -131l-49 71l188 123q-50 50 -103.5 88t-97.5 64h144q15 -8 34 -19.5t38.5 -24.5t38 -27t32.5 -26l145 93l52 -70l-127 -84q81 -77 144.5 -169 t108 -198.5t68 -228.5t23.5 -258q0 -128 -26.5 -228t-80.5 -169t-137 -105.5t-197 -36.5q-117 0 -200.5 37.5t-137 107.5t-79 169.5t-25.5 224.5zM262 508q0 -89 13.5 -167t48.5 -136t94.5 -91.5t152.5 -33.5q91 0 150 33t93.5 91t48.5 136t14 168q0 94 -14 173t-49 135.5 t-94.5 88t-150.5 31.5q-87 0 -145.5 -29.5t-94.5 -85t-51.5 -134.5t-15.5 -179z" />
<glyph unicode="&#xf1;" horiz-adv-x="1137" d="M182 0v1049h129v-166q45 43 90.5 79t92 62t93.5 40.5t95 14.5q84 0 138 -25t86 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 88 -8 147t-28 94t-54.5 49.5t-86.5 14.5q-69 0 -160 -51.5t-186 -142.5v-762h-129zM213 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5 t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xf2;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM304 1569h176l186 -361h-104z" />
<glyph unicode="&#xf3;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM461 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xf4;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM258 1208l229 361h168l229 -361h-110l-203 265l-203 -265 h-110zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM208 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5 t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q83 0 141.5 29.5 t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM299 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM669 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xf7;" horiz-adv-x="1427" d="M178 532v111h1069v-111h-1069zM637 63v144h147v-144h-147zM637 967v143h147v-143h-147z" />
<glyph unicode="&#xf8;" horiz-adv-x="1141" d="M96 -76l137 195q-55 72 -79.5 174t-24.5 229q0 122 24 224.5t77 176.5t137 115t204 41q173 0 277 -92l96 137h113l-146 -204q51 -73 76 -173.5t25 -224.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5q-88 0 -155 21t-117 63l-92 -129h-111zM262 522 q0 -91 11.5 -164t37.5 -129l467 658q-38 42 -89.5 61t-117.5 19q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM369 152q38 -39 87.5 -55.5t114.5 -16.5q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 87 -10.5 158t-35.5 125z" />
<glyph unicode="&#xf9;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM304 1569h176l186 -361h-104z" />
<glyph unicode="&#xfa;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM482 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xfb;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM256 1208l229 361h168l229 -361h-110l-203 265 l-203 -265h-110z" />
<glyph unicode="&#xfc;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM293 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5 t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM663 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xfd;" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5zM415 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xfe;" horiz-adv-x="1151" d="M182 -395v1884h129v-555q31 31 67.5 58t77 46t84.5 30t89 11q106 0 180.5 -42.5t121.5 -116.5t69 -173.5t22 -214.5q0 -123 -25 -226.5t-76 -178.5t-128.5 -116.5t-182.5 -41.5q-77 0 -153.5 34.5t-145.5 100.5v-499h-129zM311 225q69 -65 143.5 -104t145.5 -39 q62 0 115 26t91.5 80.5t60.5 138.5t22 201q0 101 -16.5 182t-51 137.5t-87.5 87t-126 30.5q-80 0 -154.5 -42.5t-142.5 -111.5v-586z" />
<glyph unicode="&#xff;" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5zM237 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5 t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM607 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#x152;" horiz-adv-x="1835" d="M139 692q0 168 29.5 301.5t98.5 226.5t181.5 143t278.5 50q60 0 115.5 -8t109.5 -21h746v-122h-633v-469h545v-123h-545v-547h633v-123h-744q-51 -14 -108 -21.5t-119 -7.5q-165 0 -277.5 50t-181.5 144t-99 227t-30 300zM285 692q0 -164 26.5 -278.5t81 -186 t138.5 -103.5t198 -32q51 0 104.5 8.5t94.5 24.5v1132q-41 16 -93 25.5t-106 9.5q-122 0 -207 -36t-137.5 -109.5t-76 -187t-23.5 -267.5z" />
<glyph unicode="&#x153;" horiz-adv-x="1792" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q135 0 228 -60.5t139 -166.5q45 112 134 169.5t222 57.5q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-673q-1 -110 12.5 -193t47.5 -139t91.5 -84t145.5 -28q41 0 76 7.5t66 25t58 45t53 67.5l105 -67 q-29 -45 -62.5 -80t-76 -59t-96.5 -37t-123 -13q-134 0 -226 51.5t-139 167.5q-51 -104 -141 -161.5t-226 -57.5q-119 0 -203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q86 0 144.5 32t94.5 89.5t51.5 138t15.5 178.5 q0 97 -14 179.5t-49 142.5t-94 93.5t-149 33.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM1006 629h546q-2 177 -64.5 259.5t-195.5 82.5q-71 0 -122.5 -20t-86 -61.5t-53.5 -106t-24 -154.5z" />
<glyph unicode="&#x178;" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530zM291 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM661 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69 t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1106" d="M240 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1106" d="M190 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#x2000;" horiz-adv-x="952" />
<glyph unicode="&#x2001;" horiz-adv-x="1905" />
<glyph unicode="&#x2002;" horiz-adv-x="952" />
<glyph unicode="&#x2003;" horiz-adv-x="1905" />
<glyph unicode="&#x2004;" horiz-adv-x="635" />
<glyph unicode="&#x2005;" horiz-adv-x="476" />
<glyph unicode="&#x2006;" horiz-adv-x="317" />
<glyph unicode="&#x2007;" horiz-adv-x="317" />
<glyph unicode="&#x2008;" horiz-adv-x="238" />
<glyph unicode="&#x2009;" horiz-adv-x="381" />
<glyph unicode="&#x200a;" horiz-adv-x="105" />
<glyph unicode="&#x2010;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2011;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2012;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2013;" horiz-adv-x="1106" d="M61 471v111h983v-111h-983z" />
<glyph unicode="&#x2014;" horiz-adv-x="2130" d="M61 471v111h2007v-111h-2007z" />
<glyph unicode="&#x2018;" d="M172 1036q0 53 9 105t23.5 98t33 83.5t36.5 61.5h76q-20 -27 -35 -64.5t-25 -76.5t-15 -75t-5 -60q56 0 77.5 -22.5t21.5 -71.5q0 -47 -22.5 -69.5t-76.5 -22.5q-55 0 -76.5 30t-21.5 84z" />
<glyph unicode="&#x2019;" d="M172 1319q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71z" />
<glyph unicode="&#x201a;" d="M172 76q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71z" />
<glyph unicode="&#x201c;" horiz-adv-x="897" d="M172 1036q0 53 9 105t23.5 98t33 83.5t36.5 61.5h76q-20 -27 -35 -64.5t-25 -76.5t-15 -75t-5 -60q56 0 77.5 -22.5t21.5 -71.5q0 -47 -22.5 -69.5t-76.5 -22.5q-55 0 -76.5 30t-21.5 84zM528 1036q0 53 9 105t24 98t34 83.5t38 61.5h76q-20 -27 -35 -64.5t-25 -76.5 t-15 -75t-5 -60q54 0 75 -22.5t21 -71.5q0 -47 -22 -69.5t-74 -22.5q-57 0 -79 30t-22 84z" />
<glyph unicode="&#x201d;" horiz-adv-x="897" d="M172 1319q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71zM528 1319q0 48 22.5 71t76.5 23q55 0 76.5 -30.5t21.5 -86.5q0 -52 -9 -103.5t-23.5 -97t-33 -83 t-36.5 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-56 0 -77.5 21t-21.5 71z" />
<glyph unicode="&#x201e;" horiz-adv-x="897" d="M172 76q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71zM528 76q0 48 22.5 71t76.5 23q55 0 76.5 -30.5t21.5 -86.5q0 -52 -9 -103.5t-23.5 -97t-33 -83t-36.5 -62.5 h-76q20 27 35 64.5t25 76.5t15 75t5 61q-56 0 -77.5 21t-21.5 71z" />
<glyph unicode="&#x2022;" horiz-adv-x="780" d="M147 745q0 51 19.5 95t53 77t78 51.5t93.5 18.5t92.5 -18.5t76.5 -51t52 -76.5t19 -96q0 -50 -19 -94t-51.5 -76.5t-76 -51.5t-93.5 -19q-51 0 -95.5 19t-77.5 51.5t-52 76.5t-19 94z" />
<glyph unicode="&#x2026;" horiz-adv-x="2048" d="M242 78q0 48 22.5 70t75.5 22q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5zM924 78q0 48 22.5 70t75.5 22q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5zM1606 78q0 48 22.5 70t75.5 22 q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5z" />
<glyph unicode="&#x202f;" horiz-adv-x="381" />
<glyph unicode="&#x2039;" horiz-adv-x="672" d="M76 524l381 471h145l-381 -471l381 -471h-145z" />
<glyph unicode="&#x203a;" horiz-adv-x="672" d="M70 53l379 471l-379 471h145l379 -471l-379 -471h-145z" />
<glyph unicode="&#x205f;" horiz-adv-x="476" />
<glyph unicode="&#x20ac;" horiz-adv-x="1255" d="M35 518l35 96h65v160h-100l35 96h73q15 132 55 233t107 170t161 104.5t218 35.5q92 0 164 -19.5t127.5 -54.5t96.5 -84.5t73 -109.5l-119 -70q-24 48 -53.5 88t-70 69t-93.5 45.5t-123 16.5q-92 0 -161.5 -28t-118.5 -82t-78.5 -133t-42.5 -181h624l-32 -96h-598v-160 h555l-35 -96h-514q13 -103 43 -182.5t79.5 -134t120 -83t164.5 -28.5q79 0 136 21t98 54.5t69 75t49 83.5l115 -64q-32 -64 -72.5 -117t-95.5 -91.5t-128.5 -59.5t-170.5 -21q-249 0 -384.5 137t-164.5 410h-108z" />
<glyph unicode="&#x2122;" horiz-adv-x="1565" d="M92 1282v102h553v-102h-221v-612h-111v612h-221zM807 670v714h139l187 -374l194 374h131v-714h-108v538l-183 -346h-75l-174 342v-534h-111z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1050" d="M0 0v1050h1050v-1050h-1050z" />
<hkern u1="&#x28;" u2="j" k="-50" />
<hkern u1="&#x2a;" u2="&#xef;" k="-45" />
<hkern u1="&#x2a;" u2="&#xc5;" k="90" />
<hkern u1="&#x2a;" u2="&#xc4;" k="90" />
<hkern u1="&#x2a;" u2="&#xc3;" k="90" />
<hkern u1="&#x2a;" u2="&#xc2;" k="90" />
<hkern u1="&#x2a;" u2="&#xc1;" k="90" />
<hkern u1="&#x2a;" u2="&#xc0;" k="90" />
<hkern u1="&#x2a;" u2="T" k="-22" />
<hkern u1="&#x2a;" u2="J" k="123" />
<hkern u1="&#x2a;" u2="A" k="90" />
<hkern u1="A" u2="&#x3f;" k="35" />
<hkern u1="A" u2="&#x2a;" k="90" />
<hkern u1="F" u2="&#xef;" k="-15" />
<hkern u1="F" u2="&#xee;" k="-10" />
<hkern u1="K" u2="&#xef;" k="-5" />
<hkern u1="K" u2="&#xee;" k="-17" />
<hkern u1="L" u2="&#xd8;" k="13" />
<hkern u1="L" u2="&#x3f;" k="50" />
<hkern u1="L" u2="&#x2a;" k="160" />
<hkern u1="T" u2="&#xef;" k="-45" />
<hkern u1="T" u2="&#xee;" k="-30" />
<hkern u1="T" u2="&#xe4;" k="90" />
<hkern u1="T" u2="&#xe3;" k="45" />
<hkern u1="T" u2="&#xe2;" k="65" />
<hkern u1="T" u2="&#x3f;" k="35" />
<hkern u1="T" u2="&#x2a;" k="-22" />
<hkern u1="V" u2="&#xef;" k="-27" />
<hkern u1="V" u2="&#xee;" k="-27" />
<hkern u1="W" u2="&#xef;" k="-27" />
<hkern u1="W" u2="&#xee;" k="-27" />
<hkern u1="X" u2="&#xef;" k="-25" />
<hkern u1="X" u2="&#xee;" k="-20" />
<hkern u1="Y" u2="&#xef;" k="-20" />
<hkern u1="Y" u2="&#xee;" k="-32" />
<hkern u1="[" u2="j" k="-50" />
<hkern u1="f" u2="&#xef;" k="-35" />
<hkern u1="f" u2="&#xee;" k="-50" />
<hkern u1="f" u2="&#xec;" k="-40" />
<hkern u1="f" u2="&#x3f;" k="-30" />
<hkern u1="f" u2="&#x2a;" k="-25" />
<hkern u1="f" u2="&#x21;" k="-30" />
<hkern u1="j" u2="&#xff;" k="-12" />
<hkern u1="j" u2="&#xfd;" k="-12" />
<hkern u1="j" u2="y" k="-12" />
<hkern u1="&#x7b;" u2="j" k="-50" />
<hkern u1="&#xa1;" u2="&#x178;" k="58" />
<hkern u1="&#xa1;" u2="&#xdd;" k="58" />
<hkern u1="&#xa1;" u2="Y" k="58" />
<hkern u1="&#xa1;" u2="W" k="30" />
<hkern u1="&#xa1;" u2="V" k="30" />
<hkern u1="&#xa1;" u2="T" k="105" />
<hkern u1="&#xbf;" u2="&#x178;" k="113" />
<hkern u1="&#xbf;" u2="&#xdd;" k="113" />
<hkern u1="&#xbf;" u2="Y" k="113" />
<hkern u1="&#xbf;" u2="W" k="60" />
<hkern u1="&#xbf;" u2="V" k="60" />
<hkern u1="&#xbf;" u2="T" k="60" />
<hkern u1="&#xc0;" u2="&#x3f;" k="35" />
<hkern u1="&#xc0;" u2="&#x2a;" k="90" />
<hkern u1="&#xc1;" u2="&#x3f;" k="35" />
<hkern u1="&#xc1;" u2="&#x2a;" k="90" />
<hkern u1="&#xc2;" u2="&#x3f;" k="35" />
<hkern u1="&#xc2;" u2="&#x2a;" k="90" />
<hkern u1="&#xc3;" u2="&#x3f;" k="35" />
<hkern u1="&#xc3;" u2="&#x2a;" k="90" />
<hkern u1="&#xc4;" u2="&#x3f;" k="35" />
<hkern u1="&#xc4;" u2="&#x2a;" k="90" />
<hkern u1="&#xc5;" u2="&#x3f;" k="35" />
<hkern u1="&#xc5;" u2="&#x2a;" k="90" />
<hkern u1="&#xdd;" u2="&#xef;" k="-20" />
<hkern u1="&#xdd;" u2="&#xee;" k="-32" />
<hkern u1="&#xde;" u2="W" k="-15" />
<hkern u1="&#xde;" u2="V" k="-15" />
<hkern u1="&#xde;" u2="T" k="-5" />
<hkern u1="&#xef;" u2="&#xef;" k="-135" />
<hkern u1="&#xef;" u2="&#x2a;" k="-45" />
<hkern u1="&#x178;" u2="&#xef;" k="-20" />
<hkern u1="&#x178;" u2="&#xee;" k="-32" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="80" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="48" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="30" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="70" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="colon,semicolon" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="15" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="t" k="15" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="z" k="-7" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="copyright,registered" k="30" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="trademark" k="110" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteleft,quotedblleft" k="90" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteright,quotedblright" k="95" />
<hkern g1="B" g2="J" k="30" />
<hkern g1="B" g2="T" k="35" />
<hkern g1="B" g2="V" k="20" />
<hkern g1="B" g2="W" k="20" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="25" />
<hkern g1="B" g2="trademark" k="45" />
<hkern g1="C,Ccedilla" g2="J" k="10" />
<hkern g1="C,Ccedilla" g2="V" k="8" />
<hkern g1="C,Ccedilla" g2="W" k="8" />
<hkern g1="C,Ccedilla" g2="X" k="15" />
<hkern g1="C,Ccedilla" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="15" />
<hkern g1="F" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="65" />
<hkern g1="F" g2="J" k="75" />
<hkern g1="F" g2="X" k="35" />
<hkern g1="F" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="144" />
<hkern g1="F" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="40" />
<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="50" />
<hkern g1="F" g2="t" k="20" />
<hkern g1="F" g2="z" k="40" />
<hkern g1="F" g2="copyright,registered" k="45" />
<hkern g1="F" g2="S" k="25" />
<hkern g1="F" g2="Z" k="20" />
<hkern g1="F" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="F" g2="m,n,p,r,ntilde" k="38" />
<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="50" />
<hkern g1="F" g2="s" k="45" />
<hkern g1="F" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="F" g2="v" k="30" />
<hkern g1="F" g2="w" k="30" />
<hkern g1="F" g2="x" k="40" />
<hkern g1="F" g2="y,yacute,ydieresis" k="35" />
<hkern g1="F" g2="b,h,k,l,germandbls,thorn" k="10" />
<hkern g1="F" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="G" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="15" />
<hkern g1="G" g2="J" k="25" />
<hkern g1="G" g2="T" k="20" />
<hkern g1="G" g2="V" k="20" />
<hkern g1="G" g2="W" k="20" />
<hkern g1="G" g2="X" k="15" />
<hkern g1="G" g2="Y,Yacute,Ydieresis" k="15" />
<hkern g1="G" g2="trademark" k="30" />
<hkern g1="J" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="J" g2="J" k="30" />
<hkern g1="J" g2="X" k="10" />
<hkern g1="J" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="45" />
<hkern g1="J" g2="AE" k="30" />
<hkern g1="K" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="K" g2="J" k="30" />
<hkern g1="K" g2="T" k="38" />
<hkern g1="K" g2="V" k="25" />
<hkern g1="K" g2="W" k="25" />
<hkern g1="K" g2="X" k="20" />
<hkern g1="K" g2="Y,Yacute,Ydieresis" k="40" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="35" />
<hkern g1="K" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="5" />
<hkern g1="K" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="K" g2="t" k="30" />
<hkern g1="K" g2="S" k="40" />
<hkern g1="K" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="K" g2="m,n,p,r,ntilde" k="20" />
<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="35" />
<hkern g1="K" g2="s" k="30" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="K" g2="v" k="25" />
<hkern g1="K" g2="w" k="25" />
<hkern g1="K" g2="y,yacute,ydieresis" k="50" />
<hkern g1="K" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="25" />
<hkern g1="L" g2="T" k="115" />
<hkern g1="L" g2="V" k="88" />
<hkern g1="L" g2="W" k="50" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="85" />
<hkern g1="L" g2="quotedbl,quotesingle" k="80" />
<hkern g1="L" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-10" />
<hkern g1="L" g2="colon,semicolon" k="-20" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="40" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="L" g2="t" k="15" />
<hkern g1="L" g2="copyright,registered" k="60" />
<hkern g1="L" g2="trademark" k="140" />
<hkern g1="L" g2="quoteleft,quotedblleft" k="108" />
<hkern g1="L" g2="quoteright,quotedblright" k="108" />
<hkern g1="L" g2="S" k="28" />
<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="18" />
<hkern g1="L" g2="v" k="30" />
<hkern g1="L" g2="w" k="30" />
<hkern g1="L" g2="y,yacute,ydieresis" k="50" />
<hkern g1="P,Thorn" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="50" />
<hkern g1="P,Thorn" g2="J" k="65" />
<hkern g1="P,Thorn" g2="T" k="10" />
<hkern g1="P,Thorn" g2="V" k="-5" />
<hkern g1="P,Thorn" g2="W" k="-5" />
<hkern g1="P,Thorn" g2="X" k="25" />
<hkern g1="P,Thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="145" />
<hkern g1="P,Thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="10" />
<hkern g1="P,Thorn" g2="S" k="-17" />
<hkern g1="P,Thorn" g2="Z" k="20" />
<hkern g1="P,Thorn" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="15" />
<hkern g1="P,Thorn" g2="AE" k="70" />
<hkern g1="P,Thorn" g2="I,Igrave,Iacute,Icircumflex,Idieresis" k="20" />
<hkern g1="R" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-10" />
<hkern g1="R" g2="J" k="30" />
<hkern g1="R" g2="T" k="25" />
<hkern g1="R" g2="V" k="20" />
<hkern g1="R" g2="W" k="20" />
<hkern g1="R" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="R" g2="z" k="-15" />
<hkern g1="R" g2="AE" k="45" />
<hkern g1="S" g2="J" k="35" />
<hkern g1="S" g2="T" k="20" />
<hkern g1="S" g2="V" k="15" />
<hkern g1="S" g2="W" k="15" />
<hkern g1="S" g2="X" k="10" />
<hkern g1="S" g2="Y,Yacute,Ydieresis" k="30" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="80" />
<hkern g1="T" g2="J" k="70" />
<hkern g1="T" g2="X" k="10" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="120" />
<hkern g1="T" g2="colon,semicolon" k="85" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="33" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="100" />
<hkern g1="T" g2="t" k="55" />
<hkern g1="T" g2="z" k="76" />
<hkern g1="T" g2="copyright,registered" k="50" />
<hkern g1="T" g2="trademark" k="-25" />
<hkern g1="T" g2="quoteleft,quotedblleft" k="-35" />
<hkern g1="T" g2="quoteright,quotedblright" k="-35" />
<hkern g1="T" g2="S" k="20" />
<hkern g1="T" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="T" g2="m,n,p,r,ntilde" k="90" />
<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="100" />
<hkern g1="T" g2="s" k="127" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="85" />
<hkern g1="T" g2="v" k="120" />
<hkern g1="T" g2="w" k="120" />
<hkern g1="T" g2="x" k="100" />
<hkern g1="T" g2="y,yacute,ydieresis" k="70" />
<hkern g1="T" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="40" />
<hkern g1="T" g2="AE" k="90" />
<hkern g1="T" g2="hyphen,endash,emdash" k="50" />
<hkern g1="T" g2="guillemotleft,guilsinglleft" k="70" />
<hkern g1="T" g2="guillemotright,guilsinglright" k="75" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="25" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="X" k="5" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="30" />
<hkern g1="W" g2="J" k="70" />
<hkern g1="W" g2="X" k="10" />
<hkern g1="W" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="W" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="W" g2="t" k="18" />
<hkern g1="W" g2="z" k="20" />
<hkern g1="W" g2="copyright,registered" k="30" />
<hkern g1="W" g2="S" k="5" />
<hkern g1="W" g2="m,n,p,r,ntilde" k="30" />
<hkern g1="W" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="W" g2="s" k="30" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="W" g2="x" k="15" />
<hkern g1="W" g2="y,yacute,ydieresis" k="10" />
<hkern g1="W" g2="b,h,k,l,germandbls,thorn" k="15" />
<hkern g1="W" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="W" g2="AE" k="50" />
<hkern g1="X" g2="T" k="10" />
<hkern g1="X" g2="V" k="10" />
<hkern g1="X" g2="W" k="10" />
<hkern g1="X" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="X" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="5" />
<hkern g1="X" g2="copyright,registered" k="15" />
<hkern g1="X" g2="S" k="10" />
<hkern g1="X" g2="m,n,p,r,ntilde" k="15" />
<hkern g1="X" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="40" />
<hkern g1="X" g2="v" k="20" />
<hkern g1="X" g2="w" k="20" />
<hkern g1="X" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="8" />
<hkern g1="X" g2="guillemotleft,guilsinglleft" k="45" />
<hkern g1="X" g2="guillemotright,guilsinglright" k="-30" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="90" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="colon,semicolon" k="35" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="60" />
<hkern g1="Y,Yacute,Ydieresis" g2="t" k="15" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="50" />
<hkern g1="Y,Yacute,Ydieresis" g2="copyright,registered" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="10" />
<hkern g1="Y,Yacute,Ydieresis" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="60" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="50" />
<hkern g1="Y,Yacute,Ydieresis" g2="v" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="w" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="b,h,k,l,germandbls,thorn" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="Y,Yacute,Ydieresis" g2="AE" k="48" />
<hkern g1="Y,Yacute,Ydieresis" g2="guillemotleft,guilsinglleft" k="50" />
<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="15" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="t" k="10" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v" k="23" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="25" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteleft,quotedblleft" k="45" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteright,quotedblright" k="45" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="v" k="10" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="x" k="8" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="y,yacute,ydieresis" k="5" />
<hkern g1="h,m,n,ntilde" g2="v" k="13" />
<hkern g1="h,m,n,ntilde" g2="w" k="13" />
<hkern g1="f" g2="quotedbl,quotesingle" k="-45" />
<hkern g1="f" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="35" />
<hkern g1="f" g2="trademark" k="-65" />
<hkern g1="f" g2="quoteleft,quotedblleft" k="-50" />
<hkern g1="f" g2="quoteright,quotedblright" k="-45" />
<hkern g1="f" g2="parenright,bracketright,braceright" k="-65" />
<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="15" />
<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="k" g2="s" k="10" />
<hkern g1="k" g2="v" k="25" />
<hkern g1="k" g2="w" k="-5" />
<hkern g1="k" g2="guillemotright,guilsinglright" k="-30" />
<hkern g1="d,l,uniFB02,uniFB04" g2="t" k="15" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="130" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="10" />
<hkern g1="r" g2="quoteleft,quotedblleft" k="-50" />
<hkern g1="r" g2="quoteright,quotedblright" k="-50" />
<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="35" />
<hkern g1="r" g2="s" k="25" />
<hkern g1="r" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="-10" />
<hkern g1="r" g2="guillemotright,guilsinglright" k="-50" />
<hkern g1="s" g2="t" k="10" />
<hkern g1="s" g2="v" k="20" />
<hkern g1="s" g2="w" k="20" />
<hkern g1="s" g2="x" k="10" />
<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="-10" />
<hkern g1="t" g2="t" k="15" />
<hkern g1="t" g2="z" k="-15" />
<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" />
<hkern g1="t" g2="u,ugrave,uacute,ucircumflex,udieresis" k="20" />
<hkern g1="t" g2="v" k="20" />
<hkern g1="t" g2="w" k="20" />
<hkern g1="t" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="28" />
<hkern g1="w" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="30" />
<hkern g1="w" g2="s" k="10" />
<hkern g1="w" g2="y,yacute,ydieresis" k="5" />
<hkern g1="x" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="8" />
<hkern g1="y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="55" />
<hkern g1="y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="8" />
<hkern g1="y,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="y,yacute,ydieresis" g2="s" k="15" />
<hkern g1="y,yacute,ydieresis" g2="v" k="10" />
<hkern g1="y,yacute,ydieresis" g2="w" k="10" />
<hkern g1="y,yacute,ydieresis" g2="x" k="15" />
<hkern g1="y,yacute,ydieresis" g2="parenright,bracketright,braceright" k="30" />
<hkern g1="z" g2="z" k="-7" />
<hkern g1="colon,semicolon" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-20" />
<hkern g1="colon,semicolon" g2="J" k="-20" />
<hkern g1="colon,semicolon" g2="T" k="85" />
<hkern g1="colon,semicolon" g2="Y,Yacute,Ydieresis" k="35" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="J" k="-20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="T" k="120" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="V" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="W" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="Y,Yacute,Ydieresis" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteleft,quotedblleft" k="93" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteright,quotedblright" k="63" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="25" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="v" k="30" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="w" k="30" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="AE" k="-30" />
<hkern g1="guillemotleft,guilsinglleft" g2="T" k="75" />
<hkern g1="guillemotleft,guilsinglleft" g2="X" k="-30" />
<hkern g1="guillemotright,guilsinglright" g2="T" k="70" />
<hkern g1="guillemotright,guilsinglright" g2="X" k="45" />
<hkern g1="guillemotright,guilsinglright" g2="Y,Yacute,Ydieresis" k="50" />
<hkern g1="hyphen,endash,emdash" g2="T" k="50" />
<hkern g1="parenleft,bracketleft,braceleft" g2="y,yacute,ydieresis" k="-30" />
<hkern g1="quoteleft,quotedblleft" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="90" />
<hkern g1="quoteleft,quotedblleft" g2="J" k="83" />
<hkern g1="quoteleft,quotedblleft" g2="T" k="-35" />
<hkern g1="quoteleft,quotedblleft" g2="t" k="-45" />
<hkern g1="quoteleft,quotedblleft" g2="quoteleft,quotedblleft" k="63" />
<hkern g1="quoteleft,quotedblleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="45" />
<hkern g1="quoteleft,quotedblleft" g2="AE" k="83" />
<hkern g1="quoteright,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="90" />
<hkern g1="quoteright,quotedblright" g2="J" k="81" />
<hkern g1="quoteright,quotedblright" g2="T" k="-35" />
<hkern g1="quoteright,quotedblright" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="78" />
<hkern g1="quoteright,quotedblright" g2="quoteright,quotedblright" k="63" />
<hkern g1="quoteright,quotedblright" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="45" />
<hkern g1="quoteright,quotedblright" g2="AE" k="83" />
<hkern g1="quotedbl,quotesingle" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="60" />
<hkern g1="quotedbl,quotesingle" g2="J" k="95" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="48" />
<hkern g1="V" g2="J" k="70" />
<hkern g1="V" g2="X" k="10" />
<hkern g1="V" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="V" g2="t" k="18" />
<hkern g1="V" g2="z" k="20" />
<hkern g1="V" g2="copyright,registered" k="30" />
<hkern g1="V" g2="S" k="5" />
<hkern g1="V" g2="m,n,p,r,ntilde" k="30" />
<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="V" g2="s" k="30" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="V" g2="x" k="15" />
<hkern g1="V" g2="y,yacute,ydieresis" k="10" />
<hkern g1="V" g2="b,h,k,l,germandbls,thorn" k="15" />
<hkern g1="V" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="V" g2="AE" k="50" />
<hkern g1="v" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="30" />
<hkern g1="v" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="18" />
<hkern g1="v" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" />
<hkern g1="v" g2="s" k="10" />
<hkern g1="v" g2="v" k="15" />
<hkern g1="v" g2="y,yacute,ydieresis" k="5" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 94 KiB

View File

@ -1,669 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="clear_sansregular" horiz-adv-x="555" >
<font-face units-per-em="2048" ascent="1489" descent="-559" />
<missing-glyph horiz-adv-x="553" />
<glyph unicode="&#xfb01;" horiz-adv-x="1143" d="M43 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM776 1315q0 53 26 77.5t85 24.5q61 0 87 -23.5t26 -78.5q0 -60 -27 -81.5t-86 -21.5q-63 0 -87 27 t-24 76zM801 0v1049h172v-1049h-172z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1159" d="M43 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM809 0v1489h172v-1489h-172z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1776" d="M43 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM676 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11 q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM1409 1315q0 53 26 77.5t85 24.5q61 0 87 -23.5t26 -78.5q0 -60 -27 -81.5t-86 -21.5q-63 0 -87 27t-24 76zM1434 0v1049h172v-1049h-172z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1792" d="M43 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM676 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11 q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154zM1442 0v1489h172v-1489h-172z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="553" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="553" />
<glyph unicode="&#x09;" horiz-adv-x="553" />
<glyph unicode="&#xa0;" horiz-adv-x="553" />
<glyph unicode="!" d="M156 98q0 60 27.5 86.5t92.5 26.5q68 0 95.5 -26.5t27.5 -86.5q0 -63 -29.5 -87.5t-93.5 -24.5q-71 0 -95.5 29.5t-24.5 82.5zM178 1384h199l-25 -985h-145z" />
<glyph unicode="&#x22;" horiz-adv-x="924" d="M174 1384h209l-41 -550h-127zM541 1384h209l-41 -550h-127z" />
<glyph unicode="#" horiz-adv-x="1446" d="M102 393v123h289l96 352h-268v125h301l105 391h129l-105 -391h309l107 391h129l-104 -391h253v-125h-286l-94 -352h264v-123h-299l-105 -393h-129l103 393h-310l-104 -393h-129l104 393h-256zM520 516h311l97 352h-312z" />
<glyph unicode="$" horiz-adv-x="1264" d="M174 313l139 82q92 -159 269 -178v426q-217 49 -299 124.5t-82 209.5q0 148 105 236.5t276 95.5v104h129v-104q89 -4 159.5 -31t123.5 -71t106 -128l-142 -82q-87 157 -247 170v-391q219 -52 308 -134.5t89 -219.5q0 -151 -103.5 -244t-293.5 -102v-209h-129v209 q-271 13 -408 237zM375 983q0 -76 59.5 -115t147.5 -61v360q-207 -15 -207 -184zM711 217q103 10 164 60.5t61 134.5q0 77 -53.5 123.5t-171.5 78.5v-397z" />
<glyph unicode="%" horiz-adv-x="2089" d="M113 971q0 442 366 442q193 0 281 -118.5t88 -323.5q0 -207 -89 -324t-280 -117q-194 0 -280 116t-86 325zM291 971q0 -126 18 -185.5t59 -90.5t111 -31q101 0 146 67t45 240q0 174 -46 241.5t-145 67.5q-69 0 -110.5 -31t-59.5 -94t-18 -184zM580 -51l778 1487h166 l-781 -1487h-163zM1243 410q0 442 367 442q194 0 280 -115.5t86 -324.5q0 -443 -366 -443q-367 0 -367 441zM1419 410q0 -172 45.5 -240t145.5 -68q69 0 110.5 31t60.5 92t19 187q0 125 -19.5 185.5t-61 91t-109.5 30.5q-100 0 -145.5 -68.5t-45.5 -240.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1425" d="M137 360q0 89 28 154.5t88.5 123t205.5 142.5q-68 78 -115 158t-47 160q0 315 371 315q163 0 252.5 -75.5t89.5 -192.5q0 -111 -72 -205.5t-229 -189.5l331 -392q92 108 131 271l156 -39q-63 -231 -180 -359l196 -231h-223l-94 111q-102 -79 -197 -109.5t-204 -30.5 q-228 0 -358 106t-130 283zM324 356q0 -105 84.5 -170t220.5 -65q116 0 188 37t111 69l-367 435q-104 -68 -151.5 -111.5t-66.5 -85.5t-19 -109zM473 1106q0 -53 41 -113.5t94 -124.5q106 59 166 130.5t60 144.5q0 59 -43 98t-129 39q-94 0 -141.5 -45t-47.5 -129z" />
<glyph unicode="'" horiz-adv-x="557" d="M174 1384h209l-41 -550h-127z" />
<glyph unicode="(" horiz-adv-x="797" d="M154 561q0 283 88 510.5t278 448.5h195q-195 -188 -297.5 -433t-102.5 -526q0 -284 104 -526.5t296 -429.5h-195q-190 218 -278 448.5t-88 507.5z" />
<glyph unicode=")" horiz-adv-x="797" d="M82 -395q196 193 297.5 434.5t101.5 521.5q0 256 -93 504t-306 455h194q189 -218 278 -446t89 -513q0 -275 -85.5 -501t-281.5 -455h-194z" />
<glyph unicode="*" horiz-adv-x="948" d="M92 1001l285 156l-285 156l58 96l270 -158l-2 269h112l-4 -269l273 158l57 -98l-285 -154l285 -156l-57 -96l-271 158l2 -268h-112l2 268l-270 -160z" />
<glyph unicode="+" horiz-adv-x="1427" d="M164 514v143h477v480h143v-480h480v-143h-480v-477h-143v477h-477z" />
<glyph unicode="," d="M156 98q0 56 27.5 84.5t92.5 28.5q66 0 94.5 -34t28.5 -99q0 -123 -36.5 -223.5t-75.5 -147.5h-105q37 46 60.5 125.5t23.5 153.5q-59 0 -84.5 26.5t-25.5 85.5z" />
<glyph unicode="-" horiz-adv-x="827" d="M102 440v172h623v-172h-623z" />
<glyph unicode="." d="M156 98q0 60 27.5 86.5t92.5 26.5q68 0 95.5 -26.5t27.5 -86.5q0 -63 -29.5 -87.5t-93.5 -24.5q-71 0 -95.5 29.5t-24.5 82.5z" />
<glyph unicode="/" horiz-adv-x="991" d="M8 -299l715 1819h168l-717 -1819h-166z" />
<glyph unicode="0" horiz-adv-x="1264" d="M125 688q0 371 123 545t383 174q262 0 385 -173t123 -544t-124 -546t-384 -175t-383 174t-123 545zM319 688q0 -289 76 -424t236 -135q162 0 237.5 135t75.5 426q0 289 -75.5 423t-237.5 134q-160 0 -236 -135t-76 -424z" />
<glyph unicode="1" horiz-adv-x="1264" d="M281 989v129q136 8 205.5 32t108.5 73t69 161h133v-1384h-181v989h-335z" />
<glyph unicode="2" horiz-adv-x="1188" d="M135 1178q72 124 185 179.5t266 55.5q201 0 318.5 -99.5t117.5 -281.5q0 -92 -26 -172.5t-81.5 -153.5t-149 -167t-417.5 -371h719v-168h-928v195q245 208 355 312.5t182 186t111.5 159t39.5 169.5q0 103 -68 165t-181 62q-107 0 -174.5 -47t-114.5 -123z" />
<glyph unicode="3" horiz-adv-x="1188" d="M102 174l154 98q37 -57 107.5 -98t164.5 -41q156 0 228.5 66.5t72.5 208.5q0 247 -317 247h-102v160h86q143 0 226 61.5t83 174.5q0 102 -67.5 151t-178.5 49q-190 0 -289 -153l-155 98q62 109 179 163t277 54q134 0 231 -41t147 -116.5t50 -176.5q0 -139 -68.5 -219 t-209.5 -115q131 -10 217 -98t86 -252q0 -213 -129 -318.5t-365 -105.5q-141 0 -257.5 55.5t-170.5 147.5z" />
<glyph unicode="4" horiz-adv-x="1264" d="M66 307v178l720 899h170v-917h191v-160h-191v-307h-178v307h-712zM248 467h530v653z" />
<glyph unicode="5" horiz-adv-x="1188" d="M113 174l153 100q35 -55 104.5 -98t170.5 -43q155 0 233 83t78 226q0 125 -80 198t-229 73t-258 -72h-90l75 743h725v-167h-573l-43 -396q43 23 102.5 35t116.5 12q213 0 329.5 -108t116.5 -318q0 -217 -125.5 -344t-373.5 -127q-160 0 -270.5 59.5t-161.5 143.5z" />
<glyph unicode="6" horiz-adv-x="1188" d="M123 666q0 356 144 551.5t399 195.5q118 0 204 -33.5t158 -99.5l-115 -143q-59 57 -114.5 86.5t-132.5 29.5q-304 0 -342 -473q57 41 144 74t189 33q191 0 305.5 -107.5t114.5 -330.5q0 -232 -125 -355t-346 -123q-251 0 -367 176.5t-116 518.5zM322 637 q0 -266 71.5 -386t220.5 -120q138 0 207.5 80t69.5 231q0 283 -281 283q-78 0 -156.5 -27.5t-131.5 -60.5z" />
<glyph unicode="7" horiz-adv-x="1264" d="M139 1217v167h967v-172l-528 -1212h-205l547 1217h-781z" />
<glyph unicode="8" horiz-adv-x="1188" d="M111 356q0 267 299 379q-116 57 -163 98.5t-75.5 96.5t-28.5 129q0 168 115 261t338 93q219 0 335 -90t116 -262q0 -72 -30 -129.5t-80 -101.5t-159 -95q158 -69 229.5 -159t71.5 -220q0 -194 -131 -289.5t-352 -95.5q-240 0 -362.5 98.5t-122.5 286.5zM295 354 q0 -106 73.5 -169.5t227.5 -63.5q156 0 227.5 65.5t71.5 169.5q0 62 -28 111t-84.5 91t-186.5 101q-128 -53 -183 -94t-86.5 -93t-31.5 -118zM328 1063q0 -54 25 -90.5t79.5 -73.5t163.5 -88q125 51 195.5 108.5t70.5 137.5q0 94 -66.5 151.5t-199.5 57.5 q-141 0 -204.5 -57.5t-63.5 -145.5z" />
<glyph unicode="9" horiz-adv-x="1188" d="M111 936q0 229 124.5 353t342.5 124q260 0 373.5 -173t113.5 -501q0 -247 -61 -416.5t-184 -260.5t-306 -91q-228 0 -373 135l113 142q59 -58 120.5 -87.5t139.5 -29.5q158 0 244 113.5t106 359.5q-59 -41 -146 -73.5t-186 -32.5q-192 0 -306.5 106.5t-114.5 331.5z M295 942q0 -283 283 -283q77 0 156 28t132 61q0 189 -28.5 288t-90 158t-169.5 59q-138 0 -210.5 -80.5t-72.5 -230.5z" />
<glyph unicode=":" d="M156 98q0 60 27.5 86.5t92.5 26.5q68 0 95.5 -26.5t27.5 -86.5q0 -63 -29.5 -87.5t-93.5 -24.5q-71 0 -95.5 29.5t-24.5 82.5zM156 936q0 59 27.5 86t92.5 27q68 0 95.5 -27t27.5 -86q0 -64 -29.5 -88.5t-93.5 -24.5q-71 0 -95.5 30t-24.5 83z" />
<glyph unicode=";" d="M156 98q0 56 27.5 84.5t92.5 28.5q68 0 95.5 -34t27.5 -99q0 -123 -36.5 -223.5t-75.5 -147.5h-105q36 46 60 128t24 151q-59 0 -84.5 26.5t-25.5 85.5zM156 936q0 59 27.5 86t92.5 27q68 0 95.5 -27t27.5 -86q0 -64 -29.5 -88.5t-93.5 -24.5q-71 0 -95.5 30t-24.5 83z " />
<glyph unicode="&#x3c;" horiz-adv-x="1427" d="M164 524v125l1100 463v-156l-902 -370l902 -369v-156z" />
<glyph unicode="=" horiz-adv-x="1427" d="M164 283v143h1100v-143h-1100zM164 745v144h1100v-144h-1100z" />
<glyph unicode="&#x3e;" horiz-adv-x="1427" d="M164 61v156l899 369l-899 370v156l1100 -463v-125z" />
<glyph unicode="?" horiz-adv-x="1049" d="M68 1206q51 92 151 149.5t266 57.5q208 0 331.5 -94.5t123.5 -267.5q0 -96 -40.5 -172t-115 -140t-254.5 -161v-199h-174v274q223 106 306 190.5t83 186.5q0 103 -66.5 161t-191.5 58q-108 0 -170.5 -41t-97.5 -100zM324 98q0 60 27.5 86.5t92.5 26.5q68 0 95.5 -26.5 t27.5 -86.5q0 -63 -29.5 -87.5t-93.5 -24.5q-71 0 -95.5 29.5t-24.5 82.5z" />
<glyph unicode="@" horiz-adv-x="1935" d="M121 553q0 239 110 437t309 310.5t441 112.5q396 0 615 -224.5t219 -619.5q0 -266 -102 -409.5t-281 -143.5q-107 0 -165.5 31t-78.5 111q-146 -115 -297 -115q-120 0 -202 58t-125.5 167t-43.5 248q0 240 111 373t309 133q124 0 240 -82v53h170v-723q0 -65 21.5 -88.5 t74.5 -23.5q97 0 156 108.5t59 294.5q0 343 -175.5 527t-502.5 184q-201 0 -364 -93t-254 -260t-91 -368q0 -327 188.5 -523t516.5 -196q241 0 428 45l33 -143q-185 -43 -463 -43q-256 0 -450 105.5t-300 302t-106 454.5zM694 520q0 -317 236 -317q101 0 248 106v482 q-123 79 -211 79q-148 0 -210.5 -89t-62.5 -261z" />
<glyph unicode="A" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM414 528h450l-225 674z" />
<glyph unicode="B" horiz-adv-x="1272" d="M182 0v1384h410q254 0 366.5 -72.5t112.5 -242.5q0 -139 -61.5 -212t-153.5 -101q137 -19 219 -101t82 -249q0 -213 -136 -309.5t-388 -96.5h-451zM367 168h188q176 0 255 23.5t117 77t38 145.5q0 86 -33.5 135.5t-103.5 72.5t-226 23h-235v-477zM367 809h204 q166 0 238 53t72 166q0 106 -66 149.5t-235 43.5h-213v-412z" />
<glyph unicode="C" horiz-adv-x="1321" d="M129 692q0 361 146.5 541t451.5 180q121 0 216 -30t160.5 -82.5t119.5 -147.5l-152 -100q-44 74 -89 112.5t-108 61t-147 22.5q-208 0 -305.5 -138.5t-97.5 -418.5q0 -276 96 -416.5t309 -140.5q118 0 205 46.5t156 160.5l153 -100q-66 -106 -134.5 -160.5t-159.5 -82.5 t-214 -28q-311 0 -458.5 179.5t-147.5 541.5z" />
<glyph unicode="D" horiz-adv-x="1292" d="M170 0v1384h348q242 0 382 -69.5t207 -220.5t67 -402q0 -254 -65.5 -404t-202 -219t-384.5 -69h-352zM354 168h154q182 0 281.5 50.5t144.5 162t45 313.5q0 198 -44 310t-145 162.5t-282 50.5h-154v-1049z" />
<glyph unicode="E" horiz-adv-x="1153" d="M182 0v1384h846v-167h-661v-404h565v-168h-565v-477h661v-168h-846z" />
<glyph unicode="F" horiz-adv-x="1108" d="M182 0v1384h838v-167h-653v-404h555v-168h-555v-645h-185z" />
<glyph unicode="G" horiz-adv-x="1391" d="M129 690q0 366 150.5 544.5t449.5 178.5q170 0 293.5 -60t202.5 -200l-150 -102q-49 90 -130 144t-218 54q-209 0 -306 -138t-97 -423q0 -291 105 -422t312 -131q80 0 148.5 18.5t148.5 53.5v328h-336v167h521v-596q-113 -63 -224.5 -99t-257.5 -36q-312 0 -462 179 t-150 540z" />
<glyph unicode="H" horiz-adv-x="1364" d="M182 0v1384h185v-583h630v583h185v-1384h-185v633h-630v-633h-185z" />
<glyph unicode="I" horiz-adv-x="770" d="M102 0v160h191v1067h-191v157h566v-157h-191v-1067h191v-160h-566z" />
<glyph unicode="J" horiz-adv-x="885" d="M51 20l68 158q32 -16 92 -30.5t98 -14.5q81 0 125 28t63 92.5t19 199.5v931h184v-1007q0 -203 -89 -305.5t-300 -102.5q-59 0 -133 14.5t-127 36.5z" />
<glyph unicode="K" horiz-adv-x="1264" d="M182 0v1384h185v-679l585 679h230l-566 -636l594 -748h-235l-477 614l-131 -147v-467h-185z" />
<glyph unicode="L" horiz-adv-x="1038" d="M182 0v1384h185v-1216h626v-168h-811z" />
<glyph unicode="M" horiz-adv-x="1593" d="M182 0v1384h250l367 -753l370 753h242v-1384h-176v1147l-383 -770h-115l-379 770v-1147h-176z" />
<glyph unicode="N" horiz-adv-x="1386" d="M182 0v1384h271l573 -1087v1087h178v-1384h-219l-625 1188v-1188h-178z" />
<glyph unicode="O" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422z" />
<glyph unicode="P" horiz-adv-x="1182" d="M182 0v1384h410q259 0 375 -107t116 -335q0 -250 -117.5 -361.5t-381.5 -111.5h-217v-469h-185zM367 637h178q146 0 213.5 28.5t99 92t31.5 180.5q0 145 -72 212t-246 67h-204v-580z" />
<glyph unicode="Q" horiz-adv-x="1364" d="M119 692q0 371 139 546t426 175q281 0 421 -175.5t140 -545.5q0 -327 -108.5 -502.5t-335.5 -212.5q20 -65 71.5 -104t159.5 -39q31 0 78 7t82 18l57 -152q-103 -35 -225 -35q-190 0 -290.5 80t-141.5 223q-246 27 -359.5 205t-113.5 512zM313 692q0 -292 89 -424.5 t282 -132.5q192 0 279.5 134t87.5 423q0 273 -82 415t-285 142q-194 0 -282.5 -133.5t-88.5 -423.5z" />
<glyph unicode="R" horiz-adv-x="1237" d="M182 0v1384h430q258 0 370 -95t112 -294q0 -170 -68.5 -269t-222.5 -132l375 -594h-217l-353 565h-241v-565h-185zM367 729h231q116 0 182.5 24.5t94.5 78t28 149.5q0 137 -69.5 188.5t-223.5 51.5h-243v-492z" />
<glyph unicode="S" horiz-adv-x="1227" d="M96 242l150 100q117 -207 362 -207q147 0 231.5 61.5t84.5 168.5q0 61 -27 103t-71 70.5t-101 46t-119 33.5q-102 25 -190 51.5t-152.5 68.5t-101.5 107.5t-37 168.5q0 184 118.5 291.5t354.5 107.5q188 0 300 -69.5t177 -178.5l-147 -104q-54 90 -131.5 139t-198.5 49 q-135 0 -210 -59.5t-75 -159.5q0 -53 22.5 -89t64.5 -60.5t104.5 -42t142.5 -37.5q94 -25 179 -52.5t148.5 -72.5t100.5 -116t37 -181q0 -194 -127.5 -301t-372.5 -107q-187 0 -312 66t-204 205z" />
<glyph unicode="T" horiz-adv-x="1184" d="M41 1217v167h1102v-167h-459v-1217h-184v1217h-459z" />
<glyph unicode="U" horiz-adv-x="1405" d="M182 578v806h185v-786q0 -182 33 -280.5t104.5 -141.5t197.5 -43q127 0 199 42.5t104.5 135.5t32.5 283v790h185v-806q0 -227 -51 -358t-160.5 -191t-306.5 -60q-196 0 -309 61t-163.5 193t-50.5 355z" />
<glyph unicode="V" horiz-adv-x="1225" d="M51 1384h193l370 -1206l371 1206h189l-441 -1384h-248z" />
<glyph unicode="W" horiz-adv-x="1757" d="M68 1384h184l258 -1118l262 1118h209l266 -1126l262 1126h181l-334 -1384h-221l-261 1108l-262 -1108h-217z" />
<glyph unicode="X" horiz-adv-x="1208" d="M53 0l449 694l-436 690h217l327 -546l338 546h207l-442 -684l442 -700h-217l-336 557l-342 -557h-207z" />
<glyph unicode="Y" horiz-adv-x="1147" d="M41 1384h209l325 -673l332 673h199l-440 -849v-535h-187v526z" />
<glyph unicode="Z" horiz-adv-x="1163" d="M92 0v176l729 1041h-698v167h917v-165l-737 -1051h754v-168h-965z" />
<glyph unicode="[" horiz-adv-x="805" d="M195 -395v1884h487v-133h-330v-1618h330v-133h-487z" />
<glyph unicode="\" horiz-adv-x="991" d="M100 1520h168l715 -1819h-166z" />
<glyph unicode="]" horiz-adv-x="805" d="M123 -262h330v1618h-330v133h487v-1884h-487v133z" />
<glyph unicode="^" horiz-adv-x="1243" d="M143 594l404 790h149l404 -790h-152l-325 637l-328 -637h-152z" />
<glyph unicode="_" horiz-adv-x="1024" d="M-10 -154h1044v-102h-1044v102z" />
<glyph unicode="`" horiz-adv-x="1085" d="M268 1569h236l178 -361h-141z" />
<glyph unicode="a" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM287 299 q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5z" />
<glyph unicode="b" horiz-adv-x="1174" d="M170 0v1489h172v-545q59 57 142 96t178 39q194 0 294.5 -142t100.5 -405q0 -265 -108.5 -414t-303.5 -149q-84 0 -164 34t-139 83v-86h-172zM342 236q57 -48 132 -80.5t147 -32.5q116 0 187 98t71 307q0 210 -64 304t-186 94q-80 0 -155 -41t-132 -94v-555z" />
<glyph unicode="c" horiz-adv-x="1030" d="M117 522q0 274 116 415.5t342 141.5q259 0 369 -192l-141 -86q-39 61 -91.5 95t-138.5 34q-151 0 -214.5 -109.5t-63.5 -302.5q0 -147 30 -229t93.5 -126t161.5 -44q84 0 137 31.5t100 97.5l141 -86q-49 -84 -136 -138.5t-240 -54.5q-231 0 -348 139.5t-117 413.5z" />
<glyph unicode="d" horiz-adv-x="1174" d="M117 516q0 257 112 410t310 153q159 0 292 -116v526h173v-1489h-173v104q-59 -57 -142 -96t-177 -39q-189 0 -292 142.5t-103 404.5zM295 520q0 -397 250 -397q82 0 156.5 41t129.5 94v555q-137 113 -270 113q-117 0 -191.5 -98.5t-74.5 -307.5z" />
<glyph unicode="e" horiz-adv-x="1081" d="M117 516q0 288 112.5 425.5t339.5 137.5q204 0 306 -117.5t102 -361.5v-96h-682q0 -208 71 -296.5t228 -88.5q70 0 123 29.5t102 95.5l142 -88q-60 -90 -146 -138.5t-233 -48.5q-234 0 -349.5 136t-115.5 411zM297 639h512q-2 141 -59.5 219t-186.5 78 q-123 0 -184.5 -70.5t-81.5 -226.5z" />
<glyph unicode="f" horiz-adv-x="633" d="M43 905v144h154v102q0 190 71.5 279.5t251.5 89.5q113 0 203 -39l-47 -148q-29 15 -73 26t-79 11q-87 0 -121 -44.5t-34 -174.5v-102h233v-144h-233v-905h-172v905h-154z" />
<glyph unicode="g" horiz-adv-x="1174" d="M117 535q0 256 113 400t309 144q159 0 292 -116v86h173v-1026q0 -211 -104.5 -314.5t-346.5 -103.5q-231 0 -381 98l64 139q135 -94 317 -94q147 0 212.5 61.5t65.5 202.5v123q-59 -57 -141 -96t-178 -39q-193 0 -294 137.5t-101 397.5zM295 539q0 -202 63 -293.5 t187 -91.5q144 0 286 135v524q-137 113 -270 113q-131 0 -198.5 -102t-67.5 -285z" />
<glyph unicode="h" horiz-adv-x="1163" d="M170 0v1489h172v-596q73 73 170 129.5t195 56.5q152 0 223 -86.5t71 -292.5v-700h-172v618q0 150 -14.5 199.5t-48.5 72.5t-100 23t-154 -50t-170 -122v-741h-172z" />
<glyph unicode="i" horiz-adv-x="512" d="M145 1315q0 53 26 77.5t85 24.5q61 0 87 -23.5t26 -78.5q0 -60 -27 -81.5t-86 -21.5q-63 0 -87 27t-24 76zM170 0v1049h172v-1049h-172z" />
<glyph unicode="j" horiz-adv-x="537" d="M-143 -365l43 142q73 -29 151 -29q84 0 109.5 58.5t25.5 168.5v1074h172v-1094q0 -190 -74 -270t-239 -80q-100 0 -188 30zM162 1315q0 53 25.5 77.5t84.5 24.5q62 0 87.5 -23.5t25.5 -78.5q0 -60 -26.5 -81.5t-86.5 -21.5q-63 0 -86.5 27t-23.5 76z" />
<glyph unicode="k" horiz-adv-x="1049" d="M170 0v1489h172v-930l426 490h211l-418 -459l440 -590h-213l-333 471l-113 -125v-346h-172z" />
<glyph unicode="l" horiz-adv-x="528" d="M178 0v1489h172v-1489h-172z" />
<glyph unicode="m" horiz-adv-x="1712" d="M170 0v1049h172v-156q68 74 152 130t180 56q106 0 169.5 -49t84.5 -156q82 87 167 146t189 59q96 0 154 -40.5t85 -117t27 -221.5v-700h-172v618q0 156 -12 206t-42 69.5t-91 19.5q-52 0 -117 -37t-170 -135v-741h-172v618q0 148 -12 200t-41 73.5t-90 21.5 q-56 0 -131 -44.5t-158 -127.5v-741h-172z" />
<glyph unicode="n" horiz-adv-x="1163" d="M170 0v1049h172v-156q73 73 170 129.5t195 56.5q152 0 223 -86.5t71 -292.5v-700h-172v618q0 150 -15 200t-49 72.5t-99 22.5q-66 0 -154 -50t-170 -122v-741h-172z" />
<glyph unicode="o" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM295 522q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311t-211.5 97q-145 0 -215 -97.5t-70 -310.5z" />
<glyph unicode="p" horiz-adv-x="1174" d="M170 -395v1444h172v-105q59 57 142 96t178 39q187 0 291 -141.5t104 -405.5q0 -258 -112.5 -410.5t-309.5 -152.5q-157 0 -293 117v-481h-172zM342 236q134 -113 270 -113q117 0 192 98t75 307q0 398 -250 398q-82 0 -157 -41t-130 -94v-555z" />
<glyph unicode="q" horiz-adv-x="1174" d="M117 516q0 265 108 414t303 149q84 0 164 -33.5t139 -82.5v86h173v-1444h-173v499q-59 -57 -142 -96t-177 -39q-191 0 -293 139t-102 408zM295 520q0 -209 63 -303t187 -94q141 0 286 135v555q-57 47 -131.5 80t-146.5 33q-117 0 -187.5 -98.5t-70.5 -307.5z" />
<glyph unicode="r" horiz-adv-x="811" d="M170 0v1049h172v-170q72 73 151.5 129.5t176.5 56.5q65 0 104 -21l-37 -165q-28 12 -80 12q-77 0 -148.5 -35.5t-166.5 -130.5v-725h-172z" />
<glyph unicode="s" horiz-adv-x="991" d="M100 158l138 84q79 -127 254 -127q114 0 170.5 43.5t56.5 117.5q0 44 -20 71.5t-62 48t-172 55.5q-187 43 -263.5 119t-76.5 202q0 139 100 223t277 84q137 0 230 -54t136 -130l-137 -84q-82 123 -233 123q-86 0 -145.5 -38t-59.5 -118q0 -71 52 -103t163 -59 q178 -46 246 -86t100.5 -98.5t32.5 -148.5q0 -147 -104 -230.5t-296 -83.5q-131 0 -235 49.5t-152 139.5z" />
<glyph unicode="t" horiz-adv-x="729" d="M47 905v144h150v292h172v-292h266v-144h-266v-555q0 -127 25.5 -182t113.5 -55q76 0 141 28l45 -141q-100 -31 -198 -31q-160 0 -229.5 84t-69.5 264v588h-150z" />
<glyph unicode="u" horiz-adv-x="1163" d="M162 348v701h172v-619q0 -150 15.5 -200t49.5 -72.5t99 -22.5t153 50.5t170 121.5v742h172v-1049h-172v156q-80 -80 -176 -133.5t-188 -53.5q-105 0 -170.5 39.5t-95 119t-29.5 220.5z" />
<glyph unicode="v" horiz-adv-x="1008" d="M51 1049h185l272 -824l270 824h178l-368 -1049h-170z" />
<glyph unicode="w" horiz-adv-x="1475" d="M63 1049h179l178 -799l250 799h143l256 -799l170 799h172l-258 -1049h-160l-256 803l-256 -803h-157z" />
<glyph unicode="x" horiz-adv-x="1012" d="M55 0l348 518l-344 531h211l242 -398l248 398h196l-348 -519l348 -530h-215l-241 399l-250 -399h-195z" />
<glyph unicode="y" horiz-adv-x="1040" d="M-4 -365l43 142q65 -29 151 -29q121 0 205 219l35 90l-383 992h186l289 -768l291 768h180l-448 -1129q-71 -173 -152 -244t-211 -71q-47 0 -100 9t-86 21z" />
<glyph unicode="z" horiz-adv-x="934" d="M82 0v131l547 774h-535v144h742v-125l-549 -779h565v-145h-770z" />
<glyph unicode="{" horiz-adv-x="977" d="M102 489v148h19q291 0 291 356v146q0 188 107.5 284.5t285.5 96.5h69v-134h-51q-131 0 -192.5 -65.5t-61.5 -198.5v-172q0 -157 -73.5 -249.5t-206.5 -139.5q280 -95 280 -387v-172q0 -133 61.5 -198.5t192.5 -65.5h51v-133h-69q-180 0 -286.5 98t-106.5 283v147 q0 178 -74.5 267t-216.5 89h-19z" />
<glyph unicode="|" horiz-adv-x="852" d="M348 -395v1915h156v-1915h-156z" />
<glyph unicode="}" horiz-adv-x="977" d="M102 -262h52q131 0 192.5 65.5t61.5 198.5v172q0 292 280 387q-133 47 -206.5 139.5t-73.5 249.5v172q0 133 -61.5 198.5t-192.5 65.5h-52v134h70q193 0 293 -98.5t100 -282.5v-146q0 -356 291 -356h18v-148h-18q-142 0 -216.5 -89t-74.5 -267v-147q0 -185 -105.5 -283 t-287.5 -98h-70v133z" />
<glyph unicode="~" horiz-adv-x="1427" d="M164 614v160q100 80 178 103.5t127 23.5q61 0 125.5 -24.5t129 -54t126 -54.5t117.5 -25q47 0 91.5 16t84.5 38.5t121 89.5v-160q-17 -12 -45.5 -32.5t-66.5 -42t-85 -37t-96 -15.5q-62 0 -130.5 24.5t-136 54.5t-130 54.5t-109.5 24.5q-66 0 -144 -37.5t-157 -106.5z " />
<glyph unicode="&#xa1;" d="M156 967q0 63 29.5 87.5t93.5 24.5q71 0 95.5 -29.5t24.5 -82.5q0 -60 -27.5 -86.5t-92.5 -26.5q-68 0 -95.5 26.5t-27.5 86.5zM178 -395l25 1087h145l29 -1087h-199z" />
<glyph unicode="&#xa2;" horiz-adv-x="1030" d="M117 522q0 274 116 415.5t342 141.5q32 0 64 -4l47 213h119l-53 -237q125 -43 192 -164l-141 -86q-41 61 -86 90l-168 -772h31q84 0 137 31.5t100 97.5l141 -86q-49 -84 -136 -138.5t-240 -54.5q-34 0 -66 4l-51 -233h-119l55 256q-153 51 -218.5 190.5t-65.5 335.5z M295 518q0 -129 29.5 -225t111.5 -141l170 776l-16 2h-17q-151 0 -214.5 -109.5t-63.5 -302.5z" />
<glyph unicode="&#xa3;" horiz-adv-x="1264" d="M113 0v156q69 14 107 70.5t55.5 135t17.5 226.5h-156v131h150l-10 49q-44 159 -44 276q0 173 127 271t342 98q306 0 443 -219l-154 -90q-45 72 -118.5 115t-170.5 43q-135 0 -206.5 -64.5t-71.5 -181.5q0 -76 24 -172q25 -104 27 -125h381v-131h-373q0 -175 -41 -276.5 t-120 -155.5h837v-156h-1046z" />
<glyph unicode="&#xa4;" horiz-adv-x="1264" d="M119 164l194 198q-71 100 -71 224q0 135 69 225l-192 195l92 92l192 -191q100 76 228 76q133 0 229 -74l193 189l90 -92l-187 -191q74 -96 74 -229q0 -115 -76 -228l189 -194l-90 -90l-195 190q-59 -41 -113.5 -55t-113.5 -14q-127 0 -223 71l-197 -192zM387 586 q0 -66 31 -124t88.5 -93t124.5 -35q109 0 181.5 74t72.5 178q0 109 -73.5 183.5t-180.5 74.5q-106 0 -175 -75.5t-69 -182.5z" />
<glyph unicode="&#xa5;" horiz-adv-x="1264" d="M66 1384h208l361 -624l364 624h199l-375 -624h303v-121h-374l-29 -45v-105h403v-120h-403v-369h-184v369h-402v120h402v97l-33 53h-369v121h299z" />
<glyph unicode="&#xa6;" horiz-adv-x="852" d="M348 242h156v-637h-156v637zM348 883v637h156v-637h-156z" />
<glyph unicode="&#xa7;" horiz-adv-x="1081" d="M109 545q0 104 68.5 179t174.5 138q-92 64 -136 123t-44 131q0 135 98.5 216t296.5 81q270 0 383 -147l-127 -97q-87 101 -252 101q-219 0 -219 -146q0 -59 55.5 -103t172.5 -110q173 -96 248 -156.5t110 -122.5t35 -132q0 -101 -59.5 -170.5t-182.5 -145.5 q100 -67 142 -127.5t42 -124.5q0 -151 -108.5 -225t-286.5 -74q-263 0 -383 148l127 96q95 -102 252 -102q115 0 167 36.5t52 112.5q0 53 -50.5 97.5t-195.5 119.5q-161 87 -230.5 142.5t-109.5 118t-40 143.5zM276 551q0 -55 60.5 -116t164.5 -117l101 -56q90 60 146.5 108 t56.5 122q0 42 -30 83t-88.5 84.5t-203.5 124.5q-90 -55 -148.5 -110.5t-58.5 -122.5z" />
<glyph unicode="&#xa8;" horiz-adv-x="1085" d="M242 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM637 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xa9;" horiz-adv-x="1855" d="M123 610q0 221 106 405.5t293.5 291t405.5 106.5q221 0 405.5 -106t291 -293.5t106.5 -403.5q0 -221 -106.5 -408t-292 -293t-404.5 -106q-220 0 -405.5 107.5t-292.5 294t-107 405.5zM256 610q0 -183 89 -339t245 -247.5t338 -91.5q179 0 335.5 90.5t246 247.5t89.5 340 t-90.5 340t-246 246.5t-334.5 89.5q-181 0 -336.5 -90.5t-245.5 -247.5t-90 -338zM557 612q0 224 94 334.5t297 110.5q123 0 200 -49.5t118 -126.5l-119 -74q-29 51 -73 89t-128 38q-135 0 -189.5 -81t-54.5 -241q0 -163 58.5 -241t187.5 -78q136 0 211 133l119 -72 q-57 -96 -136 -140t-190 -44q-204 0 -299.5 109.5t-95.5 332.5z" />
<glyph unicode="&#xaa;" horiz-adv-x="780" d="M92 1014q0 104 62.5 160.5t205.5 72.5l158 13v24q0 72 -39 96.5t-114 24.5q-113 0 -158 -78l-109 66q31 51 91.5 89t177.5 38q147 0 215.5 -52.5t68.5 -189.5v-461h-133v72q-47 -39 -98 -64.5t-115 -25.5q-102 0 -157.5 60.5t-55.5 154.5zM227 1016q0 -53 28 -77t85 -24 q47 0 91 29t87 64v145l-98 -10q-92 -8 -142.5 -33t-50.5 -94z" />
<glyph unicode="&#xab;" horiz-adv-x="1225" d="M72 524l393 471h197l-394 -471l394 -471h-197zM561 524l393 471h197l-393 -471l393 -471h-197z" />
<glyph unicode="&#xac;" horiz-adv-x="1427" d="M164 827v144h1100v-604h-144v460h-956z" />
<glyph unicode="&#xad;" horiz-adv-x="827" d="M102 440v172h623v-172h-623z" />
<glyph unicode="&#xae;" horiz-adv-x="1855" d="M123 610q0 221 106 405.5t293.5 291t405.5 106.5q221 0 405.5 -106t291 -293.5t106.5 -403.5q0 -221 -106.5 -408t-292 -293t-404.5 -106q-220 0 -405.5 107.5t-292.5 294t-107 405.5zM256 610q0 -183 89 -339t245 -247.5t338 -91.5q179 0 335.5 90.5t246 247.5t89.5 340 t-90.5 340t-246 246.5t-334.5 89.5q-181 0 -336.5 -90.5t-245.5 -247.5t-90 -338zM643 201v850h275q151 0 232 -52.5t81 -193.5q0 -111 -46 -168t-124 -80l233 -356h-164l-217 336h-131v-336h-139zM782 657h129q103 0 138.5 32t35.5 110q0 73 -36.5 103t-130.5 30h-136v-275 z" />
<glyph unicode="&#xaf;" horiz-adv-x="1085" d="M238 1255v140h610v-140h-610z" />
<glyph unicode="&#xb0;" horiz-adv-x="864" d="M152 1241q0 112 80 195.5t200 83.5q116 0 198.5 -81.5t82.5 -197.5q0 -76 -39 -143t-103 -103.5t-137 -36.5q-119 0 -200.5 84t-81.5 199zM270 1241q0 -67 47.5 -115.5t116.5 -48.5q68 0 114 48.5t46 113.5q0 68 -46 115t-114 47q-72 0 -118 -48t-46 -112z" />
<glyph unicode="&#xb1;" horiz-adv-x="1427" d="M164 0v143h1100v-143h-1100zM164 809v143h477v478h143v-478h480v-143h-480v-479h-143v479h-477z" />
<glyph unicode="&#xb2;" horiz-adv-x="889" d="M106 1362q106 162 326 162q148 0 230.5 -63.5t82.5 -180.5q0 -85 -38.5 -147t-122.5 -137t-260 -210h450v-131h-659v138q74 52 208.5 161t195 180t56.5 142q0 59 -44 89t-103 30q-108 0 -188 -111z" />
<glyph unicode="&#xb3;" horiz-adv-x="889" d="M84 778l133 74q27 -35 73 -60.5t103 -25.5q94 0 137 36t43 109q0 70 -48 100.5t-140 30.5h-90v127h78q86 0 136 32t50 91q0 54 -40 79.5t-105 25.5q-117 0 -187 -99l-133 76q40 56 82.5 85.5t105.5 47t142 17.5q160 0 233.5 -63.5t73.5 -151.5q0 -140 -139 -193 q67 -24 110 -78.5t43 -132.5q0 -133 -92 -200.5t-258 -67.5q-102 0 -186 39t-125 102z" />
<glyph unicode="&#xb4;" horiz-adv-x="1085" d="M481 1208l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xb5;" horiz-adv-x="1169" d="M139 -395v1444h174v-793q43 -53 113 -85t143 -32q153 0 273 144v766h176v-1049h-166l-10 119q-60 -76 -123.5 -113t-147.5 -37q-75 0 -132.5 15.5t-125.5 66.5v-446h-174z" />
<glyph unicode="&#xb6;" horiz-adv-x="1257" d="M59 1069q0 191 132.5 305.5t347.5 114.5h657v-133h-192v-1751h-160v1751h-195v-1751h-160v1040q-120 0 -219 51.5t-155 148t-56 224.5z" />
<glyph unicode="&#xb7;" d="M156 745q0 60 27.5 86.5t92.5 26.5q68 0 95.5 -26.5t27.5 -86.5q0 -63 -29.5 -87.5t-93.5 -24.5q-71 0 -95.5 29.5t-24.5 82.5z" />
<glyph unicode="&#xb8;" horiz-adv-x="1085" d="M244 -348l51 100q29 -10 85 -21.5t107 -11.5q121 0 121 78q0 40 -42.5 68t-133.5 35l62 118h106l-25 -49q87 -22 125.5 -73.5t38.5 -110.5q0 -86 -68.5 -133t-187.5 -47q-77 0 -147 17.5t-92 29.5z" />
<glyph unicode="&#xb9;" horiz-adv-x="889" d="M182 1241v107q129 4 182.5 37.5t77.5 119.5h125v-850h-161v586h-224z" />
<glyph unicode="&#xba;" horiz-adv-x="825" d="M102 1157q0 180 80 271.5t232 91.5q151 0 230 -93.5t79 -269.5t-79.5 -267t-229.5 -91q-154 0 -233 91.5t-79 266.5zM240 1157q0 -129 41.5 -186.5t132.5 -57.5q100 0 137 67t37 177q0 113 -37 180.5t-137 67.5q-91 0 -132.5 -58.5t-41.5 -189.5z" />
<glyph unicode="&#xbb;" horiz-adv-x="1225" d="M74 53l393 471l-393 471h196l394 -471l-394 -471h-196zM563 53l393 471l-393 471h197l393 -471l-393 -471h-197z" />
<glyph unicode="&#xbc;" horiz-adv-x="1946" d="M161 1126v107q129 4 182.5 37.5t77.5 119.5h125v-850h-161v586h-224zM481 -51l779 1487h166l-781 -1487h-164zM1100 174v125l496 542h141v-542h127v-125h-127v-183h-160v183h-477zM1278 299h299v325z" />
<glyph unicode="&#xbd;" horiz-adv-x="1946" d="M84 1126v107q129 4 182.5 37.5t77.5 119.5h125v-850h-161v586h-224zM397 -51l779 1487h166l-781 -1487h-164zM1132 696q106 162 326 162q148 0 230.5 -63.5t82.5 -180.5q0 -85 -38.5 -147t-122.5 -137t-260 -210h450v-131h-659v138q74 52 208.5 161t195 180t56.5 142 q0 59 -44 89t-103 30q-108 0 -188 -111z" />
<glyph unicode="&#xbe;" horiz-adv-x="1946" d="M104 663l133 74q27 -35 73 -60.5t103 -25.5q94 0 137 36t43 109q0 70 -48 100.5t-140 30.5h-90v127h78q86 0 136 32t50 91q0 54 -40 79.5t-105 25.5q-117 0 -187 -99l-133 76q40 56 82.5 85.5t105.5 47t142 17.5q160 0 233.5 -63.5t73.5 -151.5q0 -140 -139 -193 q67 -24 110 -78.5t43 -132.5q0 -133 -92 -200.5t-258 -67.5q-102 0 -186 39t-125 102zM585 -51l779 1487h166l-781 -1487h-164zM1100 172v125l496 542h141v-542h127v-125h-127v-183h-160v183h-477zM1278 297h299v325z" />
<glyph unicode="&#xbf;" horiz-adv-x="1049" d="M109 -14q0 102 40 184t115 152t254 174v196h174v-272q-179 -106 -252.5 -166t-105 -118.5t-31.5 -135.5q0 -113 66.5 -172t191.5 -59q109 0 171.5 40.5t96.5 100.5l152 -98q-114 -207 -418 -207q-211 0 -332.5 98t-121.5 283zM481 967q0 63 30 87.5t93 24.5 q72 0 96.5 -29.5t24.5 -82.5q0 -60 -27.5 -86.5t-93.5 -26.5q-67 0 -95 26.5t-28 86.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM364 1905h236l178 -361h-141zM414 528h450l-225 674z" />
<glyph unicode="&#xc1;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM414 528h450l-225 674zM520 1544l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xc2;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM309 1544l229 361h211l228 -361h-150l-184 238l-185 -238h-149zM414 528h450l-225 674z" />
<glyph unicode="&#xc3;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM266 1557q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36 t-24.5 -97h-121zM414 528h450l-225 674z" />
<glyph unicode="&#xc4;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM342 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM414 528h450l-225 674zM737 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5 t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xc5;" horiz-adv-x="1288" d="M51 0l473 1384h240l473 -1384h-195l-120 360h-564l-118 -360h-189zM414 528h450l-225 674zM446 1692q0 88 47 142t150 54q104 0 151 -53t47 -143t-48 -143.5t-150 -53.5q-105 0 -151 55.5t-46 141.5zM546 1692q0 -101 97 -101q98 0 98 101q0 100 -98 100q-97 0 -97 -100z " />
<glyph unicode="&#xc6;" horiz-adv-x="1747" d="M45 0l533 1384h1044v-167h-604v-408h526v-168h-526v-473h604v-168h-788v383h-453l-145 -383h-191zM442 551h392v666h-140z" />
<glyph unicode="&#xc7;" horiz-adv-x="1321" d="M129 692q0 361 146.5 541t451.5 180q121 0 216 -30t160.5 -82.5t119.5 -147.5l-152 -100q-44 74 -89 112.5t-108 61t-147 22.5q-208 0 -305.5 -138.5t-97.5 -418.5q0 -276 96 -416.5t309 -140.5q118 0 205 46.5t156 160.5l153 -100q-78 -131 -180.5 -191.5t-245.5 -75.5 l-2 -6q86 -22 125 -73.5t39 -110.5q0 -86 -68.5 -133t-187.5 -47q-78 0 -147.5 17.5t-92.5 29.5l52 100q28 -10 84.5 -21.5t107.5 -11.5q121 0 121 78q0 40 -42.5 68t-133.5 35l37 71q-297 9 -438.5 188t-141.5 533z" />
<glyph unicode="&#xc8;" horiz-adv-x="1153" d="M182 0v1384h846v-167h-661v-404h565v-168h-565v-477h661v-168h-846zM340 1905h236l178 -361h-141z" />
<glyph unicode="&#xc9;" horiz-adv-x="1153" d="M182 0v1384h846v-167h-661v-404h565v-168h-565v-477h661v-168h-846zM481 1544l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xca;" horiz-adv-x="1153" d="M182 0v1384h846v-167h-661v-404h565v-168h-565v-477h661v-168h-846zM270 1544l229 361h211l228 -361h-150l-184 238l-185 -238h-149z" />
<glyph unicode="&#xcb;" horiz-adv-x="1153" d="M182 0v1384h846v-167h-661v-404h565v-168h-565v-477h661v-168h-846zM287 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM682 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5 q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xcc;" horiz-adv-x="770" d="M92 1905h236l178 -361h-141zM102 0v160h191v1067h-191v157h566v-157h-191v-1067h191v-160h-566z" />
<glyph unicode="&#xcd;" horiz-adv-x="770" d="M102 0v160h191v1067h-191v157h566v-157h-191v-1067h191v-160h-566zM295 1544l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xce;" horiz-adv-x="770" d="M57 1544l229 361h211l228 -361h-150l-184 238l-185 -238h-149zM102 0v160h191v1067h-191v157h566v-157h-191v-1067h191v-160h-566z" />
<glyph unicode="&#xcf;" horiz-adv-x="770" d="M90 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM102 0v160h191v1067h-191v157h566v-157h-191v-1067h191v-160h-566zM485 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5 q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xd0;" horiz-adv-x="1378" d="M63 627v141h119v616h365q261 0 410.5 -70.5t220.5 -222.5t71 -399q0 -254 -70 -404t-217 -219t-413 -69h-367v627h-119zM367 168h172q198 0 307 50.5t159 164t50 311.5q0 292 -115 407.5t-401 115.5h-172v-449h335v-141h-335v-459z" />
<glyph unicode="&#xd1;" horiz-adv-x="1386" d="M182 0v1384h271l573 -1087v1087h178v-1384h-219l-625 1188v-1188h-178zM297 1557q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36 t-24.5 -97h-121z" />
<glyph unicode="&#xd2;" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422zM444 1905h236l178 -361 h-141z" />
<glyph unicode="&#xd3;" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422zM585 1544l178 361h236 l-272 -361h-142z" />
<glyph unicode="&#xd4;" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422zM348 1544l229 361h211 l228 -361h-150l-184 238l-185 -238h-149z" />
<glyph unicode="&#xd5;" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM305 1557q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262 q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36t-24.5 -97h-121zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422z" />
<glyph unicode="&#xd6;" horiz-adv-x="1364" d="M119 692q0 364 137 542.5t426 178.5q285 0 424 -175t139 -546q0 -373 -140.5 -547t-422.5 -174q-286 0 -424.5 177t-138.5 544zM313 692q0 -289 87.5 -423t281.5 -134q193 0 281 133t88 424q0 287 -86.5 422t-282.5 135t-282.5 -135t-86.5 -422zM381 1651q0 53 23.5 79.5 t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM776 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xd7;" horiz-adv-x="1427" d="M205 180l407 406l-407 407l102 101l406 -406l407 406l101 -101l-406 -407l406 -406l-101 -102l-407 407l-406 -407z" />
<glyph unicode="&#xd8;" horiz-adv-x="1364" d="M68 -115l184 271q-133 170 -133 536q0 364 137 542.5t426 178.5q225 0 360 -110l129 186h150l-195 -283q119 -177 119 -514q0 -373 -140.5 -547t-422.5 -174q-213 0 -340 97l-125 -183h-149zM313 692q0 -237 58 -366l565 823q-88 100 -254 100q-196 0 -282.5 -135 t-86.5 -422zM444 217q84 -82 238 -82q193 0 281 133t88 424q0 211 -47 338z" />
<glyph unicode="&#xd9;" horiz-adv-x="1405" d="M182 578v806h185v-786q0 -182 33 -280.5t104.5 -141.5t197.5 -43q127 0 199 42.5t104.5 135.5t32.5 283v790h185v-806q0 -227 -51 -358t-160.5 -191t-306.5 -60q-196 0 -309 61t-163.5 193t-50.5 355zM434 1905h236l178 -361h-141z" />
<glyph unicode="&#xda;" horiz-adv-x="1405" d="M182 578v806h185v-786q0 -182 33 -280.5t104.5 -141.5t197.5 -43q127 0 199 42.5t104.5 135.5t32.5 283v790h185v-806q0 -227 -51 -358t-160.5 -191t-306.5 -60q-196 0 -309 61t-163.5 193t-50.5 355zM606 1544l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xdb;" horiz-adv-x="1405" d="M182 578v806h185v-786q0 -182 33 -280.5t104.5 -141.5t197.5 -43q127 0 199 42.5t104.5 135.5t32.5 283v790h185v-806q0 -227 -51 -358t-160.5 -191t-306.5 -60q-196 0 -309 61t-163.5 193t-50.5 355zM369 1544l229 361h211l228 -361h-150l-184 238l-185 -238h-149z" />
<glyph unicode="&#xdc;" horiz-adv-x="1405" d="M182 578v806h185v-786q0 -182 33 -280.5t104.5 -141.5t197.5 -43q127 0 199 42.5t104.5 135.5t32.5 283v790h185v-806q0 -227 -51 -358t-160.5 -191t-306.5 -60q-196 0 -309 61t-163.5 193t-50.5 355zM402 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5 q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM797 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xdd;" horiz-adv-x="1147" d="M41 1384h209l325 -673l332 673h199l-440 -849v-535h-187v526zM481 1544l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xde;" horiz-adv-x="1182" d="M182 0v1384h185v-215h225q259 0 375 -107t116 -335q0 -250 -117.5 -361.5t-381.5 -111.5h-217v-254h-185zM367 422h178q146 0 213.5 28.5t99 92t31.5 180.5q0 144 -71.5 211t-246.5 67h-204v-579z" />
<glyph unicode="&#xdf;" horiz-adv-x="1171" d="M170 0v1034q0 261 102 373.5t308 112.5q170 0 274 -78t104 -246q0 -140 -64.5 -222t-188.5 -102q174 -20 262 -130.5t88 -282.5q0 -490 -408 -490q-74 0 -190 31v162q99 -41 184 -41q127 0 181.5 88t54.5 258q0 113 -43 181.5t-122.5 99t-232.5 30.5v152 q160 0 232.5 61.5t72.5 186.5q0 192 -209 192q-121 0 -177 -75t-56 -253v-1042h-172z" />
<glyph unicode="&#xe0;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM262 1569 h236l178 -361h-141zM287 299q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5z" />
<glyph unicode="&#xe1;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM287 299 q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5zM424 1208l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xe2;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM186 1208 l229 361h211l228 -361h-150l-184 238l-185 -238h-149zM287 299q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5z" />
<glyph unicode="&#xe3;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM156 1221 q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36t-24.5 -97h-121zM287 299q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5 v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5z" />
<glyph unicode="&#xe4;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM219 1315 q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM287 299q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5zM614 1315q0 53 23.5 79.5t82.5 26.5 q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xe5;" horiz-adv-x="1100" d="M109 295q0 108 42.5 179.5t123 113t233.5 59.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q48 87 146.5 133.5t244.5 46.5q226 0 324 -82t98 -284v-713h-172v131q-80 -70 -161 -116t-183 -46q-150 0 -231.5 91.5t-81.5 234.5zM287 299 q0 -94 47 -135t141 -41q39 0 77 14.5t75 36t71.5 49t67.5 53.5v256l-168 -16q-171 -15 -241 -66.5t-70 -150.5zM323 1354q0 88 47 142t150 54q104 0 151 -53t47 -143t-48 -143.5t-150 -53.5q-105 0 -151 55.5t-46 141.5zM423 1354q0 -101 97 -101q98 0 98 101q0 100 -98 100 q-97 0 -97 -100z" />
<glyph unicode="&#xe6;" horiz-adv-x="1724" d="M109 301q0 152 95 238.5t304 107.5l258 23v51q0 121 -67.5 165t-186.5 44q-106 0 -163.5 -37t-82.5 -80l-141 86q103 180 401 180q123 0 217.5 -32.5t137.5 -116.5q49 71 126.5 110t200.5 39q208 0 310 -117.5t102 -361.5v-96h-682q0 -200 68.5 -292.5t218.5 -92.5 q84 0 135 29.5t102 95.5l142 -88q-60 -90 -144 -138.5t-225 -48.5q-129 0 -232.5 44t-158.5 139q-95 -81 -213 -132t-217 -51q-140 0 -222.5 90.5t-82.5 241.5zM287 297q0 -92 49 -133t127 -41q86 0 165 42t163 107q-16 51 -20.5 95.5t-4.5 164.5l-168 -16 q-126 -11 -187 -35.5t-92.5 -70t-31.5 -113.5zM940 639h512q-2 141 -58.5 219t-189.5 78q-121 0 -187.5 -70.5t-76.5 -226.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1030" d="M117 522q0 274 116 415.5t342 141.5q259 0 369 -192l-141 -86q-39 61 -91.5 95t-138.5 34q-151 0 -214.5 -109.5t-63.5 -302.5q0 -147 30 -229t93.5 -126t161.5 -44q84 0 137 31.5t100 97.5l141 -86q-43 -74 -114.5 -125t-190.5 -64l-2 -4q86 -22 125 -73.5t39 -110.5 q0 -86 -68.5 -133t-187.5 -47q-78 0 -147.5 17.5t-92.5 29.5l52 100q28 -10 84.5 -21.5t107.5 -11.5q121 0 121 78q0 40 -42.5 68t-133.5 35l37 71q-212 11 -320 149.5t-108 401.5z" />
<glyph unicode="&#xe8;" horiz-adv-x="1081" d="M117 516q0 288 112.5 425.5t339.5 137.5q204 0 306 -117.5t102 -361.5v-96h-682q0 -208 71 -296.5t228 -88.5q70 0 123 29.5t102 95.5l142 -88q-60 -90 -146 -138.5t-233 -48.5q-234 0 -349.5 136t-115.5 411zM280 1569h236l178 -361h-141zM297 639h512q-2 141 -59.5 219 t-186.5 78q-123 0 -184.5 -70.5t-81.5 -226.5z" />
<glyph unicode="&#xe9;" horiz-adv-x="1081" d="M117 516q0 288 112.5 425.5t339.5 137.5q204 0 306 -117.5t102 -361.5v-96h-682q0 -208 71 -296.5t228 -88.5q70 0 123 29.5t102 95.5l142 -88q-60 -90 -146 -138.5t-233 -48.5q-234 0 -349.5 136t-115.5 411zM297 639h512q-2 141 -59.5 219t-186.5 78 q-123 0 -184.5 -70.5t-81.5 -226.5zM444 1208l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xea;" horiz-adv-x="1081" d="M117 516q0 288 112.5 425.5t339.5 137.5q204 0 306 -117.5t102 -361.5v-96h-682q0 -208 71 -296.5t228 -88.5q70 0 123 29.5t102 95.5l142 -88q-60 -90 -146 -138.5t-233 -48.5q-234 0 -349.5 136t-115.5 411zM225 1208l229 361h211l228 -361h-150l-184 238l-185 -238 h-149zM297 639h512q-2 141 -59.5 219t-186.5 78q-123 0 -184.5 -70.5t-81.5 -226.5z" />
<glyph unicode="&#xeb;" horiz-adv-x="1081" d="M117 516q0 288 112.5 425.5t339.5 137.5q204 0 306 -117.5t102 -361.5v-96h-682q0 -208 71 -296.5t228 -88.5q70 0 123 29.5t102 95.5l142 -88q-60 -90 -146 -138.5t-233 -48.5q-234 0 -349.5 136t-115.5 411zM258 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5 t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM297 639h512q-2 141 -59.5 219t-186.5 78q-123 0 -184.5 -70.5t-81.5 -226.5zM653 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78 z" />
<glyph unicode="&#xec;" horiz-adv-x="512" d="M-31 1569h236l178 -361h-141zM170 0v1049h172v-1049h-172z" />
<glyph unicode="&#xed;" horiz-adv-x="512" d="M141 1208l178 361h236l-272 -361h-142zM170 0v1049h172v-1049h-172z" />
<glyph unicode="&#xee;" horiz-adv-x="512" d="M-76 1208l229 361h211l228 -361h-150l-184 238l-185 -238h-149zM170 0v1049h172v-1049h-172z" />
<glyph unicode="&#xef;" horiz-adv-x="512" d="M-63 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM170 0v1049h172v-1049h-172zM332 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29 t-21.5 78z" />
<glyph unicode="&#xf0;" horiz-adv-x="1157" d="M117 508q0 253 110.5 397t311.5 144q126 0 235 -80q-20 65 -81 159t-136 168l-195 -112l-53 84l183 104q-73 84 -175 148h166q80 -47 117 -84l148 84l57 -82l-125 -72q360 -360 360 -856q0 -264 -117 -402.5t-343 -138.5q-228 0 -345.5 138.5t-117.5 400.5zM295 508 q0 -198 69 -293.5t216 -95.5q142 0 212 93t70 298q0 202 -70 295.5t-214 93.5q-148 0 -215.5 -92t-67.5 -299z" />
<glyph unicode="&#xf1;" horiz-adv-x="1163" d="M170 0v1049h172v-156q73 73 170 129.5t195 56.5q152 0 223 -86.5t71 -292.5v-700h-172v618q0 150 -15 200t-49 72.5t-99 22.5q-66 0 -154 -50t-170 -122v-741h-172zM219 1221q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121 q-19 -262 -232 -262q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36t-24.5 -97h-121z" />
<glyph unicode="&#xf2;" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM286 1569h236l178 -361h-141zM295 522q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311t-211.5 97q-145 0 -215 -97.5 t-70 -310.5z" />
<glyph unicode="&#xf3;" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM295 522q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311t-211.5 97q-145 0 -215 -97.5t-70 -310.5zM454 1208l178 361 h236l-272 -361h-142z" />
<glyph unicode="&#xf4;" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM246 1208l229 361h211l228 -361h-150l-184 238l-185 -238h-149zM295 522q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311 t-211.5 97q-145 0 -215 -97.5t-70 -310.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM203 1221q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262q-65 0 -105 22.5 t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36t-24.5 -97h-121zM295 522q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311t-211.5 97q-145 0 -215 -97.5t-70 -310.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1157" d="M117 522q0 281 119.5 419t343.5 138q226 0 343 -140.5t117 -416.5q0 -273 -117.5 -413t-342.5 -140t-344 138.5t-119 414.5zM279 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM295 522 q0 -205 67.5 -304t217.5 -99q143 0 212.5 98t69.5 305q0 214 -70.5 311t-211.5 97q-145 0 -215 -97.5t-70 -310.5zM674 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xf7;" horiz-adv-x="1427" d="M164 514v143h1100v-143h-1100zM623 43v180h180v-180h-180zM623 948v180h180v-180h-180z" />
<glyph unicode="&#xf8;" horiz-adv-x="1157" d="M102 -76l129 189q-114 137 -114 409q0 281 119.5 419t343.5 138q161 0 268 -71l80 116h141l-137 -198q108 -145 108 -404q0 -273 -117.5 -413t-342.5 -140q-158 0 -261 66l-75 -111h-142zM295 522q0 -164 41 -258l420 608q-68 58 -176 58q-145 0 -215 -97.5t-70 -310.5z M410 168q63 -49 170 -49q143 0 212.5 98t69.5 305q0 158 -37 248z" />
<glyph unicode="&#xf9;" horiz-adv-x="1163" d="M162 348v701h172v-619q0 -150 15.5 -200t49.5 -72.5t99 -22.5t153 50.5t170 121.5v742h172v-1049h-172v156q-80 -80 -176 -133.5t-188 -53.5q-105 0 -170.5 39.5t-95 119t-29.5 220.5zM303 1569h236l178 -361h-141z" />
<glyph unicode="&#xfa;" horiz-adv-x="1163" d="M162 348v701h172v-619q0 -150 15.5 -200t49.5 -72.5t99 -22.5t153 50.5t170 121.5v742h172v-1049h-172v156q-80 -80 -176 -133.5t-188 -53.5q-105 0 -170.5 39.5t-95 119t-29.5 220.5zM467 1208l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xfb;" horiz-adv-x="1163" d="M162 348v701h172v-619q0 -150 15.5 -200t49.5 -72.5t99 -22.5t153 50.5t170 121.5v742h172v-1049h-172v156q-80 -80 -176 -133.5t-188 -53.5q-105 0 -170.5 39.5t-95 119t-29.5 220.5zM248 1208l229 361h211l228 -361h-150l-184 238l-185 -238h-149z" />
<glyph unicode="&#xfc;" horiz-adv-x="1163" d="M162 348v701h172v-619q0 -150 15.5 -200t49.5 -72.5t99 -22.5t153 50.5t170 121.5v742h172v-1049h-172v156q-80 -80 -176 -133.5t-188 -53.5q-105 0 -170.5 39.5t-95 119t-29.5 220.5zM277 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5 t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM672 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#xfd;" horiz-adv-x="1040" d="M-4 -365l43 142q65 -29 151 -29q121 0 205 219l35 90l-383 992h186l289 -768l291 768h180l-448 -1129q-71 -173 -152 -244t-211 -71q-47 0 -100 9t-86 21zM405 1208l178 361h236l-272 -361h-142z" />
<glyph unicode="&#xfe;" horiz-adv-x="1174" d="M170 -395v1884h172v-545q59 57 142 96t178 39q187 0 291 -141.5t104 -405.5q0 -258 -112.5 -410.5t-309.5 -152.5q-157 0 -293 117v-481h-172zM342 236q134 -113 270 -113q117 0 192 98t75 307q0 398 -250 398q-82 0 -157 -41t-130 -94v-555z" />
<glyph unicode="&#xff;" horiz-adv-x="1040" d="M-4 -365l43 142q65 -29 151 -29q121 0 205 219l35 90l-383 992h186l289 -768l291 768h180l-448 -1129q-71 -173 -152 -244t-211 -71q-47 0 -100 9t-86 21zM221 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29 t-21.5 78zM616 1315q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#x152;" horiz-adv-x="1849" d="M129 692q0 366 145.5 543.5t452.5 177.5q124 0 223 -29h774v-167h-604v-408h525v-168h-525v-473h604v-168h-772q-102 -29 -225 -29q-305 0 -451.5 177t-146.5 544zM324 692q0 -288 95.5 -422.5t309.5 -134.5q121 0 205 43v1028q-84 43 -205 43q-216 0 -310.5 -135.5 t-94.5 -421.5z" />
<glyph unicode="&#x153;" horiz-adv-x="1821" d="M117 522q0 281 119.5 419t343.5 138q120 0 217.5 -51t148.5 -141q51 94 144.5 143t218.5 49q203 0 305 -117t102 -362v-96h-682v-21q0 -188 74 -276t225 -88q72 0 124 29.5t102 95.5l141 -88q-60 -90 -145 -138.5t-220 -48.5q-274 0 -389 193q-121 -193 -366 -193 q-225 0 -344 138.5t-119 414.5zM295 522q0 -205 67.5 -304t217.5 -99q139 0 210.5 96.5t71.5 300.5q0 153 -29.5 237.5t-91 130.5t-161.5 46q-145 0 -215 -97.5t-70 -310.5zM1036 639h512q-2 141 -59 219t-186 78q-123 0 -188.5 -68.5t-78.5 -228.5z" />
<glyph unicode="&#x178;" horiz-adv-x="1147" d="M41 1384h209l325 -673l332 673h199l-440 -849v-535h-187v526zM275 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78zM670 1651q0 53 23.5 79.5t82.5 26.5q62 0 85.5 -25.5t23.5 -80.5 q0 -60 -24.5 -83.5t-84.5 -23.5q-63 0 -84.5 29t-21.5 78z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1085" d="M209 1208l229 361h211l228 -361h-150l-184 238l-185 -238h-149z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1085" d="M166 1221q6 125 67.5 193.5t161.5 68.5q56 0 96.5 -22.5t75.5 -48.5t66 -48.5t67 -22.5q88 0 97 129h121q-19 -262 -232 -262q-65 0 -105 22.5t-71 50.5t-58.5 50.5t-68.5 22.5q-51 0 -71.5 -36t-24.5 -97h-121z" />
<glyph unicode="&#x2000;" horiz-adv-x="952" />
<glyph unicode="&#x2001;" horiz-adv-x="1905" />
<glyph unicode="&#x2002;" horiz-adv-x="952" />
<glyph unicode="&#x2003;" horiz-adv-x="1905" />
<glyph unicode="&#x2004;" horiz-adv-x="635" />
<glyph unicode="&#x2005;" horiz-adv-x="476" />
<glyph unicode="&#x2006;" horiz-adv-x="317" />
<glyph unicode="&#x2007;" horiz-adv-x="317" />
<glyph unicode="&#x2008;" horiz-adv-x="238" />
<glyph unicode="&#x2009;" horiz-adv-x="381" />
<glyph unicode="&#x200a;" horiz-adv-x="105" />
<glyph unicode="&#x2010;" horiz-adv-x="827" d="M102 440v172h623v-172h-623z" />
<glyph unicode="&#x2011;" horiz-adv-x="827" d="M102 440v172h623v-172h-623z" />
<glyph unicode="&#x2012;" horiz-adv-x="827" d="M102 440v172h623v-172h-623z" />
<glyph unicode="&#x2013;" horiz-adv-x="1085" d="M51 455v143h983v-143h-983z" />
<glyph unicode="&#x2014;" horiz-adv-x="2109" d="M51 455v143h2007v-143h-2007z" />
<glyph unicode="&#x2018;" d="M156 1014q0 106 31.5 208t80.5 162h105q-34 -42 -59 -127.5t-25 -150.5q59 0 84.5 -26.5t25.5 -86.5q0 -55 -27.5 -83.5t-92.5 -28.5q-68 0 -95.5 33.5t-27.5 99.5z" />
<glyph unicode="&#x2019;" d="M156 1300q0 56 27.5 84.5t92.5 28.5q68 0 95.5 -33.5t27.5 -99.5q0 -123 -36.5 -223.5t-75.5 -147.5h-105q35 44 59.5 130t24.5 149q-59 0 -84.5 26.5t-25.5 85.5z" />
<glyph unicode="&#x201a;" d="M156 98q0 56 27.5 84.5t92.5 28.5q68 0 95.5 -34t27.5 -99q0 -123 -36.5 -223.5t-75.5 -147.5h-105q35 44 59.5 130t24.5 149q-59 0 -84.5 26.5t-25.5 85.5z" />
<glyph unicode="&#x201c;" horiz-adv-x="965" d="M156 1014q0 106 31.5 208t80.5 162h105q-34 -42 -59 -127.5t-25 -150.5q59 0 84.5 -26.5t25.5 -86.5q0 -55 -27.5 -83.5t-92.5 -28.5q-68 0 -95.5 33.5t-27.5 99.5zM565 1014q0 101 32 207.5t81 162.5h104q-34 -43 -59 -130t-25 -148q60 0 85.5 -26.5t25.5 -86.5 q0 -55 -27.5 -83.5t-93.5 -28.5q-67 0 -95 33.5t-28 99.5z" />
<glyph unicode="&#x201d;" horiz-adv-x="965" d="M156 1300q0 56 27.5 84.5t92.5 28.5q68 0 95.5 -33.5t27.5 -99.5q0 -123 -36.5 -223.5t-75.5 -147.5h-105q35 44 59.5 130t24.5 149q-59 0 -84.5 26.5t-25.5 85.5zM565 1300q0 56 28 84.5t93 28.5q68 0 95.5 -33.5t27.5 -99.5q0 -123 -37 -223.5t-76 -147.5h-104 q33 43 58.5 127.5t25.5 151.5q-60 0 -85.5 26.5t-25.5 85.5z" />
<glyph unicode="&#x201e;" horiz-adv-x="965" d="M156 98q0 56 27.5 84.5t92.5 28.5q68 0 95.5 -34t27.5 -99q0 -123 -36.5 -223.5t-75.5 -147.5h-105q35 44 59.5 130t24.5 149q-59 0 -84.5 26.5t-25.5 85.5zM565 98q0 56 28 84.5t93 28.5q68 0 95.5 -34t27.5 -99q0 -123 -37 -223.5t-76 -147.5h-104q33 43 58.5 127.5 t25.5 151.5q-60 0 -85.5 26.5t-25.5 85.5z" />
<glyph unicode="&#x2022;" horiz-adv-x="774" d="M129 745q0 109 76 184t182 75q108 0 182 -76t74 -183q0 -104 -76 -180t-180 -76q-106 0 -182 76t-76 180z" />
<glyph unicode="&#x2026;" horiz-adv-x="2109" d="M250 98q0 60 27.5 86.5t93.5 26.5q67 0 95 -26.5t28 -86.5q0 -63 -30 -87.5t-93 -24.5q-72 0 -96.5 29.5t-24.5 82.5zM932 98q0 60 27.5 86.5t93.5 26.5q67 0 95 -26.5t28 -86.5q0 -63 -30 -87.5t-93 -24.5q-72 0 -96.5 29.5t-24.5 82.5zM1614 98q0 60 27.5 86.5 t93.5 26.5q67 0 95 -26.5t28 -86.5q0 -63 -30 -87.5t-93 -24.5q-72 0 -96.5 29.5t-24.5 82.5z" />
<glyph unicode="&#x202f;" horiz-adv-x="381" />
<glyph unicode="&#x2039;" horiz-adv-x="735" d="M72 524l393 471h197l-394 -471l394 -471h-197z" />
<glyph unicode="&#x203a;" horiz-adv-x="735" d="M74 53l393 471l-393 471h196l394 -471l-394 -471h-196z" />
<glyph unicode="&#x205f;" horiz-adv-x="476" />
<glyph unicode="&#x20ac;" horiz-adv-x="1264" d="M31 506l39 119h59v139h-98l37 119h71q35 264 173.5 397t392.5 133q114 0 204.5 -29.5t153 -80.5t119.5 -150l-152 -96q-45 78 -88 116t-101 59t-136 21q-166 0 -254.5 -98t-116.5 -272h592l-37 -119h-565v-139h530l-37 -119h-483q28 -187 118.5 -281t256.5 -94 q113 0 192 49.5t146 173.5l147 -92q-87 -160 -199.5 -225.5t-279.5 -65.5q-508 0 -576 535h-108z" />
<glyph unicode="&#x2122;" horiz-adv-x="1608" d="M76 1257v127h581v-127h-219v-587h-141v587h-221zM817 670v714h164l174 -344l180 344h160v-714h-137v483l-160 -301h-88l-156 299v-481h-137z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1050" d="M0 0v1050h1050v-1050h-1050z" />
<hkern u1="&#x28;" u2="j" k="-123" />
<hkern u1="&#x2a;" u2="&#xef;" k="-61" />
<hkern u1="&#x2a;" u2="&#xc5;" k="164" />
<hkern u1="&#x2a;" u2="&#xc4;" k="164" />
<hkern u1="&#x2a;" u2="&#xc3;" k="164" />
<hkern u1="&#x2a;" u2="&#xc2;" k="164" />
<hkern u1="&#x2a;" u2="&#xc1;" k="164" />
<hkern u1="&#x2a;" u2="&#xc0;" k="164" />
<hkern u1="&#x2a;" u2="T" k="-61" />
<hkern u1="&#x2a;" u2="J" k="225" />
<hkern u1="&#x2a;" u2="A" k="164" />
<hkern u1="A" u2="&#x3f;" k="82" />
<hkern u1="A" u2="&#x2a;" k="164" />
<hkern u1="F" u2="&#xef;" k="-41" />
<hkern u1="F" u2="&#xee;" k="-20" />
<hkern u1="K" u2="&#xef;" k="-10" />
<hkern u1="K" u2="&#xee;" k="-10" />
<hkern u1="L" u2="&#xd8;" k="20" />
<hkern u1="L" u2="&#x3f;" k="102" />
<hkern u1="L" u2="&#x2a;" k="287" />
<hkern u1="T" u2="&#xef;" k="-102" />
<hkern u1="T" u2="&#xee;" k="-61" />
<hkern u1="T" u2="&#xe4;" k="164" />
<hkern u1="T" u2="&#xe3;" k="102" />
<hkern u1="T" u2="&#xe2;" k="143" />
<hkern u1="T" u2="&#x3f;" k="20" />
<hkern u1="T" u2="&#x2a;" k="-61" />
<hkern u1="V" u2="&#xef;" k="-61" />
<hkern u1="V" u2="&#xee;" k="-41" />
<hkern u1="W" u2="&#xef;" k="-61" />
<hkern u1="W" u2="&#xee;" k="-41" />
<hkern u1="X" u2="&#xef;" k="-61" />
<hkern u1="X" u2="&#xee;" k="-41" />
<hkern u1="Y" u2="&#xef;" k="-61" />
<hkern u1="Y" u2="&#xee;" k="-51" />
<hkern u1="[" u2="j" k="-123" />
<hkern u1="f" u2="&#xef;" k="-123" />
<hkern u1="f" u2="&#xee;" k="-102" />
<hkern u1="f" u2="&#xec;" k="-82" />
<hkern u1="f" u2="&#x3f;" k="-82" />
<hkern u1="f" u2="&#x2a;" k="-82" />
<hkern u1="f" u2="&#x21;" k="-61" />
<hkern u1="j" u2="&#xff;" k="-31" />
<hkern u1="j" u2="&#xfd;" k="-31" />
<hkern u1="j" u2="y" k="-31" />
<hkern u1="&#x7b;" u2="j" k="-123" />
<hkern u1="&#xa1;" u2="&#x178;" k="113" />
<hkern u1="&#xa1;" u2="&#xdd;" k="113" />
<hkern u1="&#xa1;" u2="Y" k="113" />
<hkern u1="&#xa1;" u2="W" k="61" />
<hkern u1="&#xa1;" u2="V" k="61" />
<hkern u1="&#xa1;" u2="T" k="143" />
<hkern u1="&#xbf;" u2="&#x178;" k="215" />
<hkern u1="&#xbf;" u2="&#xdd;" k="215" />
<hkern u1="&#xbf;" u2="Y" k="215" />
<hkern u1="&#xbf;" u2="W" k="123" />
<hkern u1="&#xbf;" u2="V" k="123" />
<hkern u1="&#xbf;" u2="T" k="143" />
<hkern u1="&#xc0;" u2="&#x3f;" k="82" />
<hkern u1="&#xc0;" u2="&#x2a;" k="164" />
<hkern u1="&#xc1;" u2="&#x3f;" k="82" />
<hkern u1="&#xc1;" u2="&#x2a;" k="164" />
<hkern u1="&#xc2;" u2="&#x3f;" k="82" />
<hkern u1="&#xc2;" u2="&#x2a;" k="164" />
<hkern u1="&#xc3;" u2="&#x3f;" k="82" />
<hkern u1="&#xc3;" u2="&#x2a;" k="164" />
<hkern u1="&#xc4;" u2="&#x3f;" k="82" />
<hkern u1="&#xc4;" u2="&#x2a;" k="164" />
<hkern u1="&#xc5;" u2="&#x3f;" k="82" />
<hkern u1="&#xc5;" u2="&#x2a;" k="164" />
<hkern u1="&#xdd;" u2="&#xef;" k="-61" />
<hkern u1="&#xdd;" u2="&#xee;" k="-51" />
<hkern u1="&#xde;" u2="X" k="41" />
<hkern u1="&#xde;" u2="W" k="-10" />
<hkern u1="&#xde;" u2="V" k="-10" />
<hkern u1="&#xde;" u2="T" k="20" />
<hkern u1="&#xef;" u2="&#xef;" k="-184" />
<hkern u1="&#xef;" u2="&#x2a;" k="-61" />
<hkern u1="&#x178;" u2="&#xef;" k="-61" />
<hkern u1="&#x178;" u2="&#xee;" k="-51" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="164" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="92" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="61" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="133" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle" k="123" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="colon,semicolon" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="t" k="31" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="z" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="copyright,registered" k="41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="trademark" k="205" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteleft,quotedblleft" k="184" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteright,quotedblright" k="184" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="B" g2="J" k="61" />
<hkern g1="B" g2="T" k="61" />
<hkern g1="B" g2="V" k="41" />
<hkern g1="B" g2="W" k="41" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="51" />
<hkern g1="B" g2="trademark" k="61" />
<hkern g1="C,Ccedilla" g2="J" k="20" />
<hkern g1="C,Ccedilla" g2="V" k="20" />
<hkern g1="C,Ccedilla" g2="W" k="20" />
<hkern g1="C,Ccedilla" g2="X" k="31" />
<hkern g1="C,Ccedilla" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="F" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="123" />
<hkern g1="F" g2="J" k="184" />
<hkern g1="F" g2="X" k="61" />
<hkern g1="F" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="246" />
<hkern g1="F" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="82" />
<hkern g1="F" g2="t" k="20" />
<hkern g1="F" g2="z" k="61" />
<hkern g1="F" g2="copyright,registered" k="61" />
<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="F" g2="S" k="41" />
<hkern g1="F" g2="Z" k="41" />
<hkern g1="F" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="F" g2="m,n,p,r,ntilde" k="72" />
<hkern g1="F" g2="s" k="82" />
<hkern g1="F" g2="u,ugrave,uacute,ucircumflex,udieresis" k="41" />
<hkern g1="F" g2="v" k="41" />
<hkern g1="F" g2="w" k="41" />
<hkern g1="F" g2="x" k="82" />
<hkern g1="F" g2="y,yacute,ydieresis" k="61" />
<hkern g1="G" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="G" g2="J" k="51" />
<hkern g1="G" g2="T" k="41" />
<hkern g1="G" g2="V" k="41" />
<hkern g1="G" g2="W" k="41" />
<hkern g1="G" g2="X" k="31" />
<hkern g1="G" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="G" g2="trademark" k="41" />
<hkern g1="J" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="J" g2="J" k="61" />
<hkern g1="J" g2="X" k="20" />
<hkern g1="J" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="J" g2="AE" k="61" />
<hkern g1="K" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="K" g2="J" k="41" />
<hkern g1="K" g2="T" k="61" />
<hkern g1="K" g2="V" k="51" />
<hkern g1="K" g2="W" k="51" />
<hkern g1="K" g2="X" k="41" />
<hkern g1="K" g2="Y,Yacute,Ydieresis" k="82" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="K" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="K" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="K" g2="t" k="61" />
<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="K" g2="S" k="72" />
<hkern g1="K" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="K" g2="m,n,p,r,ntilde" k="41" />
<hkern g1="K" g2="s" k="61" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="K" g2="v" k="51" />
<hkern g1="K" g2="w" k="51" />
<hkern g1="K" g2="y,yacute,ydieresis" k="102" />
<hkern g1="K" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="41" />
<hkern g1="L" g2="T" k="205" />
<hkern g1="L" g2="V" k="154" />
<hkern g1="L" g2="W" k="102" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="164" />
<hkern g1="L" g2="quotedbl,quotesingle" k="205" />
<hkern g1="L" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-20" />
<hkern g1="L" g2="colon,semicolon" k="-41" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="L" g2="t" k="31" />
<hkern g1="L" g2="copyright,registered" k="102" />
<hkern g1="L" g2="trademark" k="287" />
<hkern g1="L" g2="quoteleft,quotedblleft" k="256" />
<hkern g1="L" g2="quoteright,quotedblright" k="256" />
<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="31" />
<hkern g1="L" g2="S" k="41" />
<hkern g1="L" g2="v" k="61" />
<hkern g1="L" g2="w" k="61" />
<hkern g1="L" g2="y,yacute,ydieresis" k="102" />
<hkern g1="P,Thorn" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="102" />
<hkern g1="P,Thorn" g2="J" k="143" />
<hkern g1="P,Thorn" g2="T" k="20" />
<hkern g1="P,Thorn" g2="V" k="-10" />
<hkern g1="P,Thorn" g2="W" k="-10" />
<hkern g1="P,Thorn" g2="X" k="41" />
<hkern g1="P,Thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="287" />
<hkern g1="P,Thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="P,Thorn" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="P,Thorn" g2="S" k="-31" />
<hkern g1="P,Thorn" g2="Z" k="41" />
<hkern g1="P,Thorn" g2="AE" k="123" />
<hkern g1="P,Thorn" g2="I,Igrave,Iacute,Icircumflex,Idieresis" k="41" />
<hkern g1="R" g2="J" k="41" />
<hkern g1="R" g2="T" k="41" />
<hkern g1="R" g2="V" k="41" />
<hkern g1="R" g2="W" k="41" />
<hkern g1="R" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="R" g2="z" k="-20" />
<hkern g1="R" g2="AE" k="61" />
<hkern g1="S" g2="J" k="61" />
<hkern g1="S" g2="T" k="41" />
<hkern g1="S" g2="V" k="31" />
<hkern g1="S" g2="W" k="31" />
<hkern g1="S" g2="X" k="20" />
<hkern g1="S" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="164" />
<hkern g1="T" g2="J" k="143" />
<hkern g1="T" g2="X" k="20" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="225" />
<hkern g1="T" g2="colon,semicolon" k="143" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="205" />
<hkern g1="T" g2="t" k="82" />
<hkern g1="T" g2="z" k="156" />
<hkern g1="T" g2="copyright,registered" k="102" />
<hkern g1="T" g2="trademark" k="-61" />
<hkern g1="T" g2="quoteleft,quotedblleft" k="-61" />
<hkern g1="T" g2="quoteright,quotedblright" k="-61" />
<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="205" />
<hkern g1="T" g2="S" k="41" />
<hkern g1="T" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="T" g2="m,n,p,r,ntilde" k="184" />
<hkern g1="T" g2="s" k="242" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="164" />
<hkern g1="T" g2="v" k="225" />
<hkern g1="T" g2="w" k="225" />
<hkern g1="T" g2="x" k="205" />
<hkern g1="T" g2="y,yacute,ydieresis" k="143" />
<hkern g1="T" g2="AE" k="184" />
<hkern g1="T" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="61" />
<hkern g1="T" g2="hyphen,endash,emdash" k="102" />
<hkern g1="T" g2="guillemotleft,guilsinglleft" k="143" />
<hkern g1="T" g2="guillemotright,guilsinglright" k="123" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="51" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="X" k="20" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="61" />
<hkern g1="W" g2="J" k="143" />
<hkern g1="W" g2="X" k="20" />
<hkern g1="W" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="W" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="W" g2="t" k="31" />
<hkern g1="W" g2="z" k="41" />
<hkern g1="W" g2="copyright,registered" k="41" />
<hkern g1="W" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="W" g2="S" k="10" />
<hkern g1="W" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="W" g2="s" k="61" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="W" g2="x" k="31" />
<hkern g1="W" g2="y,yacute,ydieresis" k="20" />
<hkern g1="W" g2="AE" k="82" />
<hkern g1="W" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="W" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="X" g2="T" k="20" />
<hkern g1="X" g2="V" k="20" />
<hkern g1="X" g2="W" k="20" />
<hkern g1="X" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="X" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="X" g2="copyright,registered" k="41" />
<hkern g1="X" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="X" g2="S" k="20" />
<hkern g1="X" g2="m,n,p,r,ntilde" k="31" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="82" />
<hkern g1="X" g2="v" k="41" />
<hkern g1="X" g2="w" k="41" />
<hkern g1="X" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="X" g2="guillemotleft,guilsinglleft" k="61" />
<hkern g1="X" g2="guillemotright,guilsinglright" k="-41" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="133" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="184" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="164" />
<hkern g1="Y,Yacute,Ydieresis" g2="colon,semicolon" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="t" k="31" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="copyright,registered" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="143" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="133" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="v" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="w" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="AE" k="113" />
<hkern g1="Y,Yacute,Ydieresis" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="guillemotleft,guilsinglleft" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="b,h,k,l,germandbls,thorn" k="41" />
<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="31" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="t" k="20" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v" k="31" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="w" k="10" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="41" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteleft,quotedblleft" k="82" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteright,quotedblright" k="82" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="v" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="x" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="y,yacute,ydieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="v" k="20" />
<hkern g1="h,m,n,ntilde" g2="w" k="20" />
<hkern g1="f" g2="quotedbl,quotesingle" k="-102" />
<hkern g1="f" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="f" g2="trademark" k="-143" />
<hkern g1="f" g2="quoteleft,quotedblleft" k="-102" />
<hkern g1="f" g2="quoteright,quotedblright" k="-102" />
<hkern g1="f" g2="parenright,bracketright,braceright" k="-143" />
<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="k" g2="s" k="20" />
<hkern g1="k" g2="v" k="41" />
<hkern g1="k" g2="guillemotright,guilsinglright" k="-41" />
<hkern g1="d,l,uniFB02,uniFB04" g2="t" k="20" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="266" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="r" g2="quoteleft,quotedblleft" k="-82" />
<hkern g1="r" g2="quoteright,quotedblright" k="-82" />
<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="r" g2="s" k="41" />
<hkern g1="r" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="-20" />
<hkern g1="r" g2="guillemotright,guilsinglright" k="-82" />
<hkern g1="s" g2="t" k="20" />
<hkern g1="s" g2="v" k="41" />
<hkern g1="s" g2="w" k="41" />
<hkern g1="s" g2="x" k="20" />
<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="-20" />
<hkern g1="t" g2="t" k="20" />
<hkern g1="t" g2="z" k="-31" />
<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="t" g2="u,ugrave,uacute,ucircumflex,udieresis" k="31" />
<hkern g1="t" g2="v" k="31" />
<hkern g1="t" g2="w" k="31" />
<hkern g1="t" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="41" />
<hkern g1="w" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="w" g2="s" k="20" />
<hkern g1="w" g2="y,yacute,ydieresis" k="10" />
<hkern g1="x" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="123" />
<hkern g1="y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="y,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="y,yacute,ydieresis" g2="s" k="31" />
<hkern g1="y,yacute,ydieresis" g2="v" k="20" />
<hkern g1="y,yacute,ydieresis" g2="w" k="20" />
<hkern g1="y,yacute,ydieresis" g2="x" k="31" />
<hkern g1="y,yacute,ydieresis" g2="parenright,bracketright,braceright" k="61" />
<hkern g1="z" g2="z" k="-20" />
<hkern g1="colon,semicolon" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="colon,semicolon" g2="J" k="-41" />
<hkern g1="colon,semicolon" g2="T" k="143" />
<hkern g1="colon,semicolon" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="J" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="T" k="225" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="V" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="W" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="Y,Yacute,Ydieresis" k="164" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteleft,quotedblleft" k="184" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteright,quotedblright" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="v" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="w" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="AE" k="-61" />
<hkern g1="guillemotleft,guilsinglleft" g2="T" k="123" />
<hkern g1="guillemotleft,guilsinglleft" g2="X" k="-41" />
<hkern g1="guillemotright,guilsinglright" g2="T" k="143" />
<hkern g1="guillemotright,guilsinglright" g2="X" k="61" />
<hkern g1="guillemotright,guilsinglright" g2="Y,Yacute,Ydieresis" k="102" />
<hkern g1="hyphen,endash,emdash" g2="T" k="102" />
<hkern g1="parenleft,bracketleft,braceleft" g2="y,yacute,ydieresis" k="-61" />
<hkern g1="quoteleft,quotedblleft" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteleft,quotedblleft" g2="J" k="195" />
<hkern g1="quoteleft,quotedblleft" g2="T" k="-61" />
<hkern g1="quoteleft,quotedblleft" g2="t" k="-61" />
<hkern g1="quoteleft,quotedblleft" g2="quoteleft,quotedblleft" k="123" />
<hkern g1="quoteleft,quotedblleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="82" />
<hkern g1="quoteleft,quotedblleft" g2="AE" k="174" />
<hkern g1="quoteright,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteright,quotedblright" g2="J" k="193" />
<hkern g1="quoteright,quotedblright" g2="T" k="-61" />
<hkern g1="quoteright,quotedblright" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="164" />
<hkern g1="quoteright,quotedblright" g2="quoteright,quotedblright" k="123" />
<hkern g1="quoteright,quotedblright" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="82" />
<hkern g1="quoteright,quotedblright" g2="AE" k="174" />
<hkern g1="quotedbl,quotesingle" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="123" />
<hkern g1="quotedbl,quotesingle" g2="J" k="205" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="92" />
<hkern g1="V" g2="J" k="143" />
<hkern g1="V" g2="X" k="20" />
<hkern g1="V" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="V" g2="t" k="31" />
<hkern g1="V" g2="z" k="41" />
<hkern g1="V" g2="copyright,registered" k="41" />
<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="V" g2="S" k="10" />
<hkern g1="V" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="V" g2="s" k="61" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="V" g2="x" k="31" />
<hkern g1="V" g2="y,yacute,ydieresis" k="20" />
<hkern g1="V" g2="AE" k="82" />
<hkern g1="V" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="V" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="v" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="v" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="v" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="v" g2="s" k="20" />
<hkern g1="v" g2="v" k="20" />
<hkern g1="v" g2="y,yacute,ydieresis" k="10" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 81 KiB

View File

@ -1,30 +0,0 @@
@font-face {
font-family: "Clear Sans";
src: url("ClearSans-Light-webfont.eot");
src: url("ClearSans-Light-webfont.eot?#iefix") format("embedded-opentype"),
url("ClearSans-Light-webfont.svg#clear_sans_lightregular") format("svg"),
url("ClearSans-Light-webfont.woff") format("woff");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: "Clear Sans";
src: url("ClearSans-Regular-webfont.eot");
src: url("ClearSans-Regular-webfont.eot?#iefix") format("embedded-opentype"),
url("ClearSans-Regular-webfont.svg#clear_sansregular") format("svg"),
url("ClearSans-Regular-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Clear Sans";
src: url("ClearSans-Bold-webfont.eot");
src: url("ClearSans-Bold-webfont.eot?#iefix") format("embedded-opentype"),
url("ClearSans-Bold-webfont.svg#clear_sansbold") format("svg"),
url("ClearSans-Bold-webfont.woff") format("woff");
font-weight: 700;
font-style: normal;
}

View File

@ -1,82 +0,0 @@
// Exponent
// From: https://github.com/Team-Sass/Sassy-math/blob/master/sass/math.scss#L36
@function exponent($base, $exponent) {
// reset value
$value: $base;
// positive intergers get multiplied
@if $exponent > 1 {
@for $i from 2 through $exponent {
$value: $value * $base; } }
// negitive intergers get divided. A number divided by itself is 1
@if $exponent < 1 {
@for $i from 0 through -$exponent {
$value: $value / $base; } }
// return the last value written
@return $value;
}
@function pow($base, $exponent) {
@return exponent($base, $exponent);
}
// Transition mixins
@mixin transition($args...) {
-webkit-transition: $args;
-moz-transition: $args;
transition: $args;
}
@mixin transition-property($args...) {
-webkit-transition-property: $args;
-moz-transition-property: $args;
transition-property: $args;
}
@mixin animation($args...) {
-webkit-animation: $args;
-moz-animation: $args;
animation: $args;
}
@mixin animation-fill-mode($args...) {
-webkit-animation-fill-mode: $args;
-moz-animation-fill-mode: $args;
animation-fill-mode: $args;
}
@mixin transform($args...) {
-webkit-transform: $args;
-moz-transform: $args;
-ms-transform: $args;
transform: $args;
}
// Keyframe animations
@mixin keyframes($animation-name) {
@-webkit-keyframes $animation-name {
@content;
}
@-moz-keyframes $animation-name {
@content;
}
@keyframes $animation-name {
@content;
}
}
// Media queries
@mixin smaller($width) {
@media screen and (max-width: $width) {
@content;
}
}
// Clearfix
@mixin clearfix {
&:after {
content: "";
display: block;
clear: both;
}
}

View File

@ -1,758 +0,0 @@
@import url(fonts/clear-sans.css);
html, body {
margin: 0;
padding: 0;
background: #faf8ef;
color: #776e65;
font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif;
font-size: 18px; }
body {
margin: 80px 0; }
.heading:after {
content: "";
display: block;
clear: both; }
h1.title {
font-size: 80px;
font-weight: bold;
margin: 0;
display: block;
float: left; }
@-webkit-keyframes move-up {
0% {
top: 25px;
opacity: 1; }
100% {
top: -50px;
opacity: 0; } }
@-moz-keyframes move-up {
0% {
top: 25px;
opacity: 1; }
100% {
top: -50px;
opacity: 0; } }
@keyframes move-up {
0% {
top: 25px;
opacity: 1; }
100% {
top: -50px;
opacity: 0; } }
.scores-container {
float: right;
text-align: right; }
.score-container, .best-container {
position: relative;
display: inline-block;
background: #bbada0;
padding: 15px 25px;
font-size: 25px;
height: 25px;
line-height: 47px;
font-weight: bold;
border-radius: 3px;
color: white;
margin-top: 8px;
text-align: center; }
.score-container:after, .best-container:after {
position: absolute;
width: 100%;
top: 10px;
left: 0;
text-transform: uppercase;
font-size: 13px;
line-height: 13px;
text-align: center;
color: #eee4da; }
.score-container .score-addition, .best-container .score-addition {
position: absolute;
right: 30px;
color: red;
font-size: 25px;
line-height: 25px;
font-weight: bold;
color: rgba(119, 110, 101, 0.9);
z-index: 100;
-webkit-animation: move-up 600ms ease-in;
-moz-animation: move-up 600ms ease-in;
animation: move-up 600ms ease-in;
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
animation-fill-mode: both; }
.score-container:after {
content: "Score"; }
.best-container:after {
content: "Best"; }
p {
margin-top: 0;
margin-bottom: 10px;
line-height: 1.65; }
a {
color: #776e65;
font-weight: bold;
text-decoration: underline;
cursor: pointer; }
strong.important {
text-transform: uppercase; }
hr {
border: none;
border-bottom: 1px solid #d8d4d0;
margin-top: 20px;
margin-bottom: 30px; }
.container {
width: 500px;
margin: 0 auto; }
@-webkit-keyframes fade-in {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-moz-keyframes fade-in {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@keyframes fade-in {
0% {
opacity: 0; }
100% {
opacity: 1; } }
.game-container {
margin-top: 40px;
position: relative;
padding: 15px;
cursor: default;
-webkit-touch-callout: none;
-ms-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-ms-touch-action: none;
touch-action: none;
background: #bbada0;
border-radius: 6px;
width: 500px;
height: 500px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; }
.game-container .game-message {
display: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(238, 228, 218, 0.5);
z-index: 100;
text-align: center;
-webkit-animation: fade-in 800ms ease 1200ms;
-moz-animation: fade-in 800ms ease 1200ms;
animation: fade-in 800ms ease 1200ms;
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
animation-fill-mode: both; }
.game-container .game-message p {
font-size: 60px;
font-weight: bold;
height: 60px;
line-height: 60px;
margin-top: 222px; }
.game-container .game-message .lower {
display: block;
margin-top: 59px; }
.game-container .game-message a {
display: inline-block;
background: #8f7a66;
border-radius: 3px;
padding: 0 20px;
text-decoration: none;
color: #f9f6f2;
height: 40px;
line-height: 42px;
margin-left: 9px; }
.game-container .game-message a.keep-playing-button {
display: none; }
.game-container .game-message.game-won {
background: rgba(237, 194, 46, 0.5);
color: #f9f6f2; }
.game-container .game-message.game-won a.keep-playing-button {
display: inline-block; }
.game-container .game-message.game-won, .game-container .game-message.game-over {
display: block; }
.grid-container {
position: absolute;
z-index: 1; }
.grid-row {
margin-bottom: 15px; }
.grid-row:last-child {
margin-bottom: 0; }
.grid-row:after {
content: "";
display: block;
clear: both; }
.grid-cell {
width: 106.25px;
height: 106.25px;
margin-right: 15px;
float: left;
border-radius: 3px;
background: rgba(238, 228, 218, 0.35); }
.grid-cell:last-child {
margin-right: 0; }
.tile-container {
position: absolute;
z-index: 2; }
.tile, .tile .tile-inner {
width: 107px;
height: 107px;
line-height: 107px; }
.tile.tile-position-1-1 {
-webkit-transform: translate(0px, 0px);
-moz-transform: translate(0px, 0px);
-ms-transform: translate(0px, 0px);
transform: translate(0px, 0px); }
.tile.tile-position-1-2 {
-webkit-transform: translate(0px, 121px);
-moz-transform: translate(0px, 121px);
-ms-transform: translate(0px, 121px);
transform: translate(0px, 121px); }
.tile.tile-position-1-3 {
-webkit-transform: translate(0px, 242px);
-moz-transform: translate(0px, 242px);
-ms-transform: translate(0px, 242px);
transform: translate(0px, 242px); }
.tile.tile-position-1-4 {
-webkit-transform: translate(0px, 363px);
-moz-transform: translate(0px, 363px);
-ms-transform: translate(0px, 363px);
transform: translate(0px, 363px); }
.tile.tile-position-2-1 {
-webkit-transform: translate(121px, 0px);
-moz-transform: translate(121px, 0px);
-ms-transform: translate(121px, 0px);
transform: translate(121px, 0px); }
.tile.tile-position-2-2 {
-webkit-transform: translate(121px, 121px);
-moz-transform: translate(121px, 121px);
-ms-transform: translate(121px, 121px);
transform: translate(121px, 121px); }
.tile.tile-position-2-3 {
-webkit-transform: translate(121px, 242px);
-moz-transform: translate(121px, 242px);
-ms-transform: translate(121px, 242px);
transform: translate(121px, 242px); }
.tile.tile-position-2-4 {
-webkit-transform: translate(121px, 363px);
-moz-transform: translate(121px, 363px);
-ms-transform: translate(121px, 363px);
transform: translate(121px, 363px); }
.tile.tile-position-3-1 {
-webkit-transform: translate(242px, 0px);
-moz-transform: translate(242px, 0px);
-ms-transform: translate(242px, 0px);
transform: translate(242px, 0px); }
.tile.tile-position-3-2 {
-webkit-transform: translate(242px, 121px);
-moz-transform: translate(242px, 121px);
-ms-transform: translate(242px, 121px);
transform: translate(242px, 121px); }
.tile.tile-position-3-3 {
-webkit-transform: translate(242px, 242px);
-moz-transform: translate(242px, 242px);
-ms-transform: translate(242px, 242px);
transform: translate(242px, 242px); }
.tile.tile-position-3-4 {
-webkit-transform: translate(242px, 363px);
-moz-transform: translate(242px, 363px);
-ms-transform: translate(242px, 363px);
transform: translate(242px, 363px); }
.tile.tile-position-4-1 {
-webkit-transform: translate(363px, 0px);
-moz-transform: translate(363px, 0px);
-ms-transform: translate(363px, 0px);
transform: translate(363px, 0px); }
.tile.tile-position-4-2 {
-webkit-transform: translate(363px, 121px);
-moz-transform: translate(363px, 121px);
-ms-transform: translate(363px, 121px);
transform: translate(363px, 121px); }
.tile.tile-position-4-3 {
-webkit-transform: translate(363px, 242px);
-moz-transform: translate(363px, 242px);
-ms-transform: translate(363px, 242px);
transform: translate(363px, 242px); }
.tile.tile-position-4-4 {
-webkit-transform: translate(363px, 363px);
-moz-transform: translate(363px, 363px);
-ms-transform: translate(363px, 363px);
transform: translate(363px, 363px); }
.tile {
position: absolute;
-webkit-transition: 100ms ease-in-out;
-moz-transition: 100ms ease-in-out;
transition: 100ms ease-in-out;
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
transition-property: transform; }
.tile .tile-inner {
border-radius: 3px;
background: #eee4da;
text-align: center;
font-weight: bold;
z-index: 10;
font-size: 55px; }
.tile.tile-2 .tile-inner {
background: #eee4da;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
.tile.tile-4 .tile-inner {
background: #ede0c8;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
.tile.tile-8 .tile-inner {
color: #f9f6f2;
background: #f2b179; }
.tile.tile-16 .tile-inner {
color: #f9f6f2;
background: #f59563; }
.tile.tile-32 .tile-inner {
color: #f9f6f2;
background: #f67c5f; }
.tile.tile-64 .tile-inner {
color: #f9f6f2;
background: #f65e3b; }
.tile.tile-128 .tile-inner {
color: #f9f6f2;
background: #edcf72;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.2381), inset 0 0 0 1px rgba(255, 255, 255, 0.14286);
font-size: 45px; }
@media screen and (max-width: 520px) {
.tile.tile-128 .tile-inner {
font-size: 25px; } }
.tile.tile-256 .tile-inner {
color: #f9f6f2;
background: #edcc61;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.19048);
font-size: 45px; }
@media screen and (max-width: 520px) {
.tile.tile-256 .tile-inner {
font-size: 25px; } }
.tile.tile-512 .tile-inner {
color: #f9f6f2;
background: #edc850;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381);
font-size: 45px; }
@media screen and (max-width: 520px) {
.tile.tile-512 .tile-inner {
font-size: 25px; } }
.tile.tile-1024 .tile-inner {
color: #f9f6f2;
background: #edc53f;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571);
font-size: 35px; }
@media screen and (max-width: 520px) {
.tile.tile-1024 .tile-inner {
font-size: 15px; } }
.tile.tile-2048 .tile-inner {
color: #f9f6f2;
background: #edc22e;
box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.55556), inset 0 0 0 1px rgba(255, 255, 255, 0.33333);
font-size: 35px; }
@media screen and (max-width: 520px) {
.tile.tile-2048 .tile-inner {
font-size: 15px; } }
.tile.tile-super .tile-inner {
color: #f9f6f2;
background: #3c3a32;
font-size: 30px; }
@media screen and (max-width: 520px) {
.tile.tile-super .tile-inner {
font-size: 10px; } }
@-webkit-keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
100% {
opacity: 1;
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
100% {
opacity: 1;
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
@keyframes appear {
0% {
opacity: 0;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
100% {
opacity: 1;
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
.tile-new .tile-inner {
-webkit-animation: appear 200ms ease 100ms;
-moz-animation: appear 200ms ease 100ms;
animation: appear 200ms ease 100ms;
-webkit-animation-fill-mode: backwards;
-moz-animation-fill-mode: backwards;
animation-fill-mode: backwards; }
@-webkit-keyframes pop {
0% {
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
50% {
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2); }
100% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pop {
0% {
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
50% {
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2); }
100% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
@keyframes pop {
0% {
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0); }
50% {
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2); }
100% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1); } }
.tile-merged .tile-inner {
z-index: 20;
-webkit-animation: pop 200ms ease 100ms;
-moz-animation: pop 200ms ease 100ms;
animation: pop 200ms ease 100ms;
-webkit-animation-fill-mode: backwards;
-moz-animation-fill-mode: backwards;
animation-fill-mode: backwards; }
.above-game:after {
content: "";
display: block;
clear: both; }
.game-intro {
float: left;
line-height: 42px;
margin-bottom: 0; }
.restart-button {
display: inline-block;
background: #8f7a66;
border-radius: 3px;
padding: 0 20px;
text-decoration: none;
color: #f9f6f2;
height: 40px;
line-height: 42px;
display: block;
text-align: center;
float: right; }
.game-explanation {
margin-top: 50px; }
@media screen and (max-width: 520px) {
html, body {
font-size: 15px; }
body {
margin: 20px 0;
padding: 0 20px; }
h1.title {
font-size: 27px;
margin-top: 15px; }
.container {
width: 280px;
margin: 0 auto; }
.score-container, .best-container {
margin-top: 0;
padding: 15px 10px;
min-width: 40px; }
.heading {
margin-bottom: 10px; }
.game-intro {
width: 55%;
display: block;
box-sizing: border-box;
line-height: 1.65; }
.restart-button {
width: 42%;
padding: 0;
display: block;
box-sizing: border-box;
margin-top: 2px; }
.game-container {
margin-top: 17px;
position: relative;
padding: 10px;
cursor: default;
-webkit-touch-callout: none;
-ms-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-ms-touch-action: none;
touch-action: none;
background: #bbada0;
border-radius: 6px;
width: 280px;
height: 280px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; }
.game-container .game-message {
display: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(238, 228, 218, 0.5);
z-index: 100;
text-align: center;
-webkit-animation: fade-in 800ms ease 1200ms;
-moz-animation: fade-in 800ms ease 1200ms;
animation: fade-in 800ms ease 1200ms;
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
animation-fill-mode: both; }
.game-container .game-message p {
font-size: 60px;
font-weight: bold;
height: 60px;
line-height: 60px;
margin-top: 222px; }
.game-container .game-message .lower {
display: block;
margin-top: 59px; }
.game-container .game-message a {
display: inline-block;
background: #8f7a66;
border-radius: 3px;
padding: 0 20px;
text-decoration: none;
color: #f9f6f2;
height: 40px;
line-height: 42px;
margin-left: 9px; }
.game-container .game-message a.keep-playing-button {
display: none; }
.game-container .game-message.game-won {
background: rgba(237, 194, 46, 0.5);
color: #f9f6f2; }
.game-container .game-message.game-won a.keep-playing-button {
display: inline-block; }
.game-container .game-message.game-won, .game-container .game-message.game-over {
display: block; }
.grid-container {
position: absolute;
z-index: 1; }
.grid-row {
margin-bottom: 10px; }
.grid-row:last-child {
margin-bottom: 0; }
.grid-row:after {
content: "";
display: block;
clear: both; }
.grid-cell {
width: 57.5px;
height: 57.5px;
margin-right: 10px;
float: left;
border-radius: 3px;
background: rgba(238, 228, 218, 0.35); }
.grid-cell:last-child {
margin-right: 0; }
.tile-container {
position: absolute;
z-index: 2; }
.tile, .tile .tile-inner {
width: 58px;
height: 58px;
line-height: 58px; }
.tile.tile-position-1-1 {
-webkit-transform: translate(0px, 0px);
-moz-transform: translate(0px, 0px);
-ms-transform: translate(0px, 0px);
transform: translate(0px, 0px); }
.tile.tile-position-1-2 {
-webkit-transform: translate(0px, 67px);
-moz-transform: translate(0px, 67px);
-ms-transform: translate(0px, 67px);
transform: translate(0px, 67px); }
.tile.tile-position-1-3 {
-webkit-transform: translate(0px, 135px);
-moz-transform: translate(0px, 135px);
-ms-transform: translate(0px, 135px);
transform: translate(0px, 135px); }
.tile.tile-position-1-4 {
-webkit-transform: translate(0px, 202px);
-moz-transform: translate(0px, 202px);
-ms-transform: translate(0px, 202px);
transform: translate(0px, 202px); }
.tile.tile-position-2-1 {
-webkit-transform: translate(67px, 0px);
-moz-transform: translate(67px, 0px);
-ms-transform: translate(67px, 0px);
transform: translate(67px, 0px); }
.tile.tile-position-2-2 {
-webkit-transform: translate(67px, 67px);
-moz-transform: translate(67px, 67px);
-ms-transform: translate(67px, 67px);
transform: translate(67px, 67px); }
.tile.tile-position-2-3 {
-webkit-transform: translate(67px, 135px);
-moz-transform: translate(67px, 135px);
-ms-transform: translate(67px, 135px);
transform: translate(67px, 135px); }
.tile.tile-position-2-4 {
-webkit-transform: translate(67px, 202px);
-moz-transform: translate(67px, 202px);
-ms-transform: translate(67px, 202px);
transform: translate(67px, 202px); }
.tile.tile-position-3-1 {
-webkit-transform: translate(135px, 0px);
-moz-transform: translate(135px, 0px);
-ms-transform: translate(135px, 0px);
transform: translate(135px, 0px); }
.tile.tile-position-3-2 {
-webkit-transform: translate(135px, 67px);
-moz-transform: translate(135px, 67px);
-ms-transform: translate(135px, 67px);
transform: translate(135px, 67px); }
.tile.tile-position-3-3 {
-webkit-transform: translate(135px, 135px);
-moz-transform: translate(135px, 135px);
-ms-transform: translate(135px, 135px);
transform: translate(135px, 135px); }
.tile.tile-position-3-4 {
-webkit-transform: translate(135px, 202px);
-moz-transform: translate(135px, 202px);
-ms-transform: translate(135px, 202px);
transform: translate(135px, 202px); }
.tile.tile-position-4-1 {
-webkit-transform: translate(202px, 0px);
-moz-transform: translate(202px, 0px);
-ms-transform: translate(202px, 0px);
transform: translate(202px, 0px); }
.tile.tile-position-4-2 {
-webkit-transform: translate(202px, 67px);
-moz-transform: translate(202px, 67px);
-ms-transform: translate(202px, 67px);
transform: translate(202px, 67px); }
.tile.tile-position-4-3 {
-webkit-transform: translate(202px, 135px);
-moz-transform: translate(202px, 135px);
-ms-transform: translate(202px, 135px);
transform: translate(202px, 135px); }
.tile.tile-position-4-4 {
-webkit-transform: translate(202px, 202px);
-moz-transform: translate(202px, 202px);
-ms-transform: translate(202px, 202px);
transform: translate(202px, 202px); }
.tile .tile-inner {
font-size: 35px; }
.game-message p {
font-size: 30px !important;
height: 30px !important;
line-height: 30px !important;
margin-top: 90px !important; }
.game-message .lower {
margin-top: 30px !important; } }

View File

@ -1,549 +0,0 @@
@import "helpers";
@import "fonts/clear-sans.css";
$field-width: 500px;
$grid-spacing: 15px;
$grid-row-cells: 4;
$tile-size: ($field-width - $grid-spacing * ($grid-row-cells + 1)) / $grid-row-cells;
$tile-border-radius: 3px;
$mobile-threshold: $field-width + 20px;
$text-color: #776E65;
$bright-text-color: #f9f6f2;
$tile-color: #eee4da;
$tile-gold-color: #edc22e;
$tile-gold-glow-color: lighten($tile-gold-color, 15%);
$game-container-margin-top: 40px;
$game-container-background: #bbada0;
$transition-speed: 100ms;
html, body {
margin: 0;
padding: 0;
background: #faf8ef;
color: $text-color;
font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif;
font-size: 18px;
}
body {
margin: 80px 0;
}
.heading {
@include clearfix;
}
h1.title {
font-size: 80px;
font-weight: bold;
margin: 0;
display: block;
float: left;
}
@include keyframes(move-up) {
0% {
top: 25px;
opacity: 1;
}
100% {
top: -50px;
opacity: 0;
}
}
.scores-container {
float: right;
text-align: right;
}
.score-container, .best-container {
$height: 25px;
position: relative;
display: inline-block;
background: $game-container-background;
padding: 15px 25px;
font-size: $height;
height: $height;
line-height: $height + 22px;
font-weight: bold;
border-radius: 3px;
color: white;
margin-top: 8px;
text-align: center;
&:after {
position: absolute;
width: 100%;
top: 10px;
left: 0;
text-transform: uppercase;
font-size: 13px;
line-height: 13px;
text-align: center;
color: $tile-color;
}
.score-addition {
position: absolute;
right: 30px;
color: red;
font-size: $height;
line-height: $height;
font-weight: bold;
color: rgba($text-color, .9);
z-index: 100;
@include animation(move-up 600ms ease-in);
@include animation-fill-mode(both);
}
}
.score-container:after {
content: "Score";
}
.best-container:after {
content: "Best";
}
p {
margin-top: 0;
margin-bottom: 10px;
line-height: 1.65;
}
a {
color: $text-color;
font-weight: bold;
text-decoration: underline;
cursor: pointer;
}
strong {
&.important {
text-transform: uppercase;
}
}
hr {
border: none;
border-bottom: 1px solid lighten($text-color, 40%);
margin-top: 20px;
margin-bottom: 30px;
}
.container {
width: $field-width;
margin: 0 auto;
}
@include keyframes(fade-in) {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
// Styles for buttons
@mixin button {
display: inline-block;
background: darken($game-container-background, 20%);
border-radius: 3px;
padding: 0 20px;
text-decoration: none;
color: $bright-text-color;
height: 40px;
line-height: 42px;
}
// Game field mixin used to render CSS at different width
@mixin game-field {
.game-container {
margin-top: $game-container-margin-top;
position: relative;
padding: $grid-spacing;
cursor: default;
-webkit-touch-callout: none;
-ms-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-ms-touch-action: none;
touch-action: none;
background: $game-container-background;
border-radius: $tile-border-radius * 2;
width: $field-width;
height: $field-width;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
.game-message {
display: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba($tile-color, .5);
z-index: 100;
text-align: center;
p {
font-size: 60px;
font-weight: bold;
height: 60px;
line-height: 60px;
margin-top: 222px;
// height: $field-width;
// line-height: $field-width;
}
.lower {
display: block;
margin-top: 59px;
}
a {
@include button;
margin-left: 9px;
// margin-top: 59px;
&.keep-playing-button {
display: none;
}
}
@include animation(fade-in 800ms ease $transition-speed * 12);
@include animation-fill-mode(both);
&.game-won {
background: rgba($tile-gold-color, .5);
color: $bright-text-color;
a.keep-playing-button {
display: inline-block;
}
}
&.game-won, &.game-over {
display: block;
}
}
}
.grid-container {
position: absolute;
z-index: 1;
}
.grid-row {
margin-bottom: $grid-spacing;
&:last-child {
margin-bottom: 0;
}
&:after {
content: "";
display: block;
clear: both;
}
}
.grid-cell {
width: $tile-size;
height: $tile-size;
margin-right: $grid-spacing;
float: left;
border-radius: $tile-border-radius;
background: rgba($tile-color, .35);
&:last-child {
margin-right: 0;
}
}
.tile-container {
position: absolute;
z-index: 2;
}
.tile {
&, .tile-inner {
width: ceil($tile-size);
height: ceil($tile-size);
line-height: ceil($tile-size);
}
// Build position classes
@for $x from 1 through $grid-row-cells {
@for $y from 1 through $grid-row-cells {
&.tile-position-#{$x}-#{$y} {
$xPos: floor(($tile-size + $grid-spacing) * ($x - 1));
$yPos: floor(($tile-size + $grid-spacing) * ($y - 1));
@include transform(translate($xPos, $yPos));
}
}
}
}
}
// End of game-field mixin
@include game-field;
.tile {
position: absolute; // Makes transforms relative to the top-left corner
.tile-inner {
border-radius: $tile-border-radius;
background: $tile-color;
text-align: center;
font-weight: bold;
z-index: 10;
font-size: 55px;
}
// Movement transition
@include transition($transition-speed ease-in-out);
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
transition-property: transform;
$base: 2;
$exponent: 1;
$limit: 11;
// Colors for all 11 states, false = no special color
$special-colors: false false, // 2
false false, // 4
#f78e48 true, // 8
#fc5e2e true, // 16
#ff3333 true, // 32
#ff0000 true, // 64
false true, // 128
false true, // 256
false true, // 512
false true, // 1024
false true; // 2048
// Build tile colors
@while $exponent <= $limit {
$power: pow($base, $exponent);
&.tile-#{$power} .tile-inner {
// Calculate base background color
$gold-percent: ($exponent - 1) / ($limit - 1) * 100;
$mixed-background: mix($tile-gold-color, $tile-color, $gold-percent);
$nth-color: nth($special-colors, $exponent);
$special-background: nth($nth-color, 1);
$bright-color: nth($nth-color, 2);
@if $special-background {
$mixed-background: mix($special-background, $mixed-background, 55%);
}
@if $bright-color {
color: $bright-text-color;
}
// Set background
background: $mixed-background;
// Add glow
$glow-opacity: max($exponent - 4, 0) / ($limit - 4);
@if not $special-background {
box-shadow: 0 0 30px 10px rgba($tile-gold-glow-color, $glow-opacity / 1.8),
inset 0 0 0 1px rgba(white, $glow-opacity / 3);
}
// Adjust font size for bigger numbers
@if $power >= 100 and $power < 1000 {
font-size: 45px;
// Media queries placed here to avoid carrying over the rest of the logic
@include smaller($mobile-threshold) {
font-size: 25px;
}
} @else if $power >= 1000 {
font-size: 35px;
@include smaller($mobile-threshold) {
font-size: 15px;
}
}
}
$exponent: $exponent + 1;
}
// Super tiles (above 2048)
&.tile-super .tile-inner {
color: $bright-text-color;
background: mix(#333, $tile-gold-color, 95%);
font-size: 30px;
@include smaller($mobile-threshold) {
font-size: 10px;
}
}
}
@include keyframes(appear) {
0% {
opacity: 0;
@include transform(scale(0));
}
100% {
opacity: 1;
@include transform(scale(1));
}
}
.tile-new .tile-inner {
@include animation(appear 200ms ease $transition-speed);
@include animation-fill-mode(backwards);
}
@include keyframes(pop) {
0% {
@include transform(scale(0));
}
50% {
@include transform(scale(1.2));
}
100% {
@include transform(scale(1));
}
}
.tile-merged .tile-inner {
z-index: 20;
@include animation(pop 200ms ease $transition-speed);
@include animation-fill-mode(backwards);
}
.above-game {
@include clearfix;
}
.game-intro {
float: left;
line-height: 42px;
margin-bottom: 0;
}
.restart-button {
@include button;
display: block;
text-align: center;
float: right;
}
.game-explanation {
margin-top: 50px;
}
@include smaller($mobile-threshold) {
// Redefine variables for smaller screens
$field-width: 280px;
$grid-spacing: 10px;
$grid-row-cells: 4;
$tile-size: ($field-width - $grid-spacing * ($grid-row-cells + 1)) / $grid-row-cells;
$tile-border-radius: 3px;
$game-container-margin-top: 17px;
html, body {
font-size: 15px;
}
body {
margin: 20px 0;
padding: 0 20px;
}
h1.title {
font-size: 27px;
margin-top: 15px;
}
.container {
width: $field-width;
margin: 0 auto;
}
.score-container, .best-container {
margin-top: 0;
padding: 15px 10px;
min-width: 40px;
}
.heading {
margin-bottom: 10px;
}
// Show intro and restart button side by side
.game-intro {
width: 55%;
display: block;
box-sizing: border-box;
line-height: 1.65;
}
.restart-button {
width: 42%;
padding: 0;
display: block;
box-sizing: border-box;
margin-top: 2px;
}
// Render the game field at the right width
@include game-field;
// Rest of the font-size adjustments in the tile class
.tile .tile-inner {
font-size: 35px;
}
.game-message {
p {
font-size: 30px !important;
height: 30px !important;
line-height: 30px !important;
margin-top: 90px !important;
}
.lower {
margin-top: 30px !important;
}
}
}

View File

@ -1,54 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本2.4.0
# 更新时间2022年10月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 加入路径
#################
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
#################
# 引入所需的库(正式内容)
#################
import os
import sys
import ConfigLanguareRunner
class Old:
wine = ""
wineprefix = ""
def __init__(self, wine = "", wineprefix = "") -> None:
self.wine = os.getenv("WINE") if wine == "" else wine
self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
def runCommand(self, command: str) -> None:
com = ConfigLanguareRunner.Command(command)
print(com.GetCommandList())
return com.Run(com.GetCommandList(), self.wineprefix, self.wine)
def runList(self, command: list) -> None:
return ConfigLanguareRunner.Command("").Run(command, self.wineprefix, self.wine)
class Bash:
wine = ""
wineprefix = ""
def __init__(self, wine = "", wineprefix = "") -> None:
self.wine = os.getenv("WINE") if wine == "" else wine
self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
def runCommand(self, command: str) -> int:
return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{command}\"")
def runList(self, command: list) -> int:
commandStr = ""
for k in command:
for i in k:
commandStr += f"'{i}' "
commandStr += ";"
return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{commandStr}\"")

View File

@ -1,94 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import updatekiller
def AddSparkStoreSource():
# Download and install key
os.system("mkdir -p /tmp/spark-store-install")
os.system("wget -O /tmp/spark-store-install/spark-store.asc https://d.store.deepinos.org.cn/dcs-repo.gpg-key.asc")
os.system("sudo gpg --dearmor /tmp/spark-store-install/spark-store.asc")
os.system("cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg")
# Run apt update to avoid users being fucked up by the non-exist dependency problem
os.system("sudo apt update -o Dir::Etc::sourcelist=\"sources.list.d/sparkstore.list\" -o Dir::Etc::sourceparts=\"-\" -o APT::Get::List-Cleanup=\"0\"")
def InstallSparkWine(wine):
#if os.path.exists("/usr/local/bin/ss-apt-fast"):
#os.system("sudo apt install apt-fast -y")
#os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
#return
#os.system("sudo ss-apt-fast update")
if not os.system("which aptss"):
os.system(f"sudo aptss install \"{wine}\" -y")
elif not os.system("which ss-apt-fast"):
os.system("sudo ss-apt-fast update")
os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
elif not os.system("which apt-fast"):
os.system(f"sudo apt-fast install \"{wine}\" -y")
else:
os.system(f"sudo apt install \"{wine}\" -y")
###################
# 程序功能
###################
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input()
os.system("sudo apt update")
print("请问是否要更新操作系统?[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt upgrade -y")
if os.system("which wine > /dev/null"):
print("请问是否要安装原版 winewine64[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install wine -y")
if os.system("which deepin-wine > /dev/null"):
print("请问是否要安装 deepin-wine[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine -y")
if os.system("which deepin-wine5 > /dev/null"):
print("请问是否要安装 deepin-wine5需要安装最新版星火应用商店[Y/N]", end=' ')
choose = input().upper()
if os.system("which deepin-wine5-stable > /dev/null"):
print("请问是否要安装 deepin-wine5-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine5-stable -y")
if os.system("which deepin-wine6-stable > /dev/null"):
print("请问是否要安装 deepin-wine6-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine6-stable -y")
if os.system("which spark-wine7-devel > /dev/null"):
print("请问是否要安装 spark-wine7-devel需要安装最新版星火应用商店[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallSparkWine("spark-wine7-devel")
if os.system("which ukylin-wine > /dev/null"):
print("请问是否要安装 ukylin-wine需要添加 ukylin 源,但因为可能会导致系统问题,将不会自动添加)?[Y/N]", end=" ")
choose = input().upper()
if not choose == "N":
os.system("sudo apt install ukylin-wine -y")
print("全部完成!")

View File

@ -1,112 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本1.8.0
# 更新时间2022年08月01日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import pyquery
import updatekiller
import req as requests
import urllib.parse as parse
def CleanTerminal():
os.system("clear")
print('''
mm mmmm m
## mmmm mmmm #" " mm#mm mmm m mm mmm
# # #" "# #" "# "#mmm # #" "# #" " #" #
#mm# # # # # "# # # # # #""""
# # ##m#" ##m#" "mmm#" "mm "#m#" # "#mm"
# #
" "
''')
print("本软件源来自腾讯软件管家,只会下载文件后缀为“.exe”的文件")
print("请输入要搜索的内容如果要结束请输入“exit”或点击右上角“×”关闭")
print("无法保证从这里下载的安装包能正常安装/运行")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二")
print("参数一为需要安装的容器参数二为需要使用的wine两个参数位置不能颠倒")
sys.exit()
CleanTerminal()
while True:
search = input(">")
if search.replace(" ", "").replace("\n", "") == "":
continue
if search.lower() == "exit": # 输入“exit”
break # 结束程序
# 获取初步 API
try:
apiReturn = json.loads(requests.get(f"https://s.pcmgr.qq.com/tapi/web/searchcgi.php?type=search&callback=searchCallback&keyword={parse.quote(search)}&page=1&pernum=30").text[:-2][15:])
except:
#traceback.print_exc()
input("无法连接服务器,按回车键继续")
CleanTerminal()
continue
option = 0
downloadUrl = []
if not "list" in apiReturn:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
for i in apiReturn["list"]: # 遍历选项
htmlShow = i["xmlInfo"]
url = pyquery.PyQuery(htmlShow)("url").text()
if url[-3:] != "exe": # 格式非 exe忽略
continue
print(option, i["SoftName"], url)
downloadUrl.append(url)
option += 1
if option == 0:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
while True:
try:
choose = input("请输入选项编号输入“exit”取消 >")
if choose.lower() == "exit":
choose = choose.lower()
break
choose = int(choose)
except:
print("输入有误,请正确输入编号")
continue
if not 0 <= choose or not choose < len(downloadUrl):
print("输入的值超出范围,请正确输入编号")
continue
break
if choose == "exit":
CleanTerminal()
continue
print("开始下载……")
os.system("rm -rf /tmp/wineappstore")
os.system("mkdir -p /tmp/wineappstore")
os.system(f"aria2c -x 16 -s 16 -d /tmp/wineappstore -o install.exe \"{downloadUrl[choose]}\"")
print("开始安装……")
print(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
print("安装结束……")
input("按回车键继续……")
CleanTerminal()

View File

@ -1,593 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本2.4.0
# 更新时间2022年10月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import base64
import json
import traceback
import updatekiller
import urllib.request
import req as requests
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
from Model import *
try:
import PyQt5.QtWebEngineWidgets as QtWebEngineWidgets
webeng = True
except:
print("未安装此依赖库")
webeng = False
urlSourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto", # Gitlink 源
"https://gitee.com/gfdgd-xi/deep-wine-runner-auto-configuration-script/raw/master/", # Gitee 源
"https://gfdgd-xi.github.io/deep-wine-runner-auto-configuration-script/", # Github 源
"http://gfdgdxi.msns.cn/wine-runner-list/auto/", # 备用源1纯 IPv6 源
"http://gfdgdxi.free.idcfengye.com/deep-wine-runner-auto-configuration-script/", # 备用源2
"http://gfdgdxi.free.idcfengye.com/wine-runner-list/auto/", # 备用源 3
"http://127.0.0.1/wine-runner-list/auto/" # 本地测试源
]
urlSources = urlSourcesList[0]
lists = []
class ProgramRunStatusUpload():
msgWindow = None
starLayout = None
fen = None
starList = []
sha1Value = ""
programName = None
def ChangeStar():
if ProgramRunStatusUpload.fen.currentIndex() > 5:
for i in ProgramRunStatusUpload.starList:
i.setText(f"<img src='{programPath}/Icon/BadStar.svg' width=25>")
return
for i in range(ProgramRunStatusUpload.fen.currentIndex()):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/Star.svg' width=25>")
head = ProgramRunStatusUpload.fen.currentIndex()
end = len(ProgramRunStatusUpload.starList)
for i in range(head, end):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/UnStar.svg' width=25>")
def ShowWindow(sha="", title=""):
ProgramRunStatusUpload.starList = []
ProgramRunStatusUpload.sha1Value = sha
ProgramRunStatusUpload.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
ProgramRunStatusUpload.programName = QtWidgets.QLineEdit()
ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
upload = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "上传"))
upload.clicked.connect(ProgramRunStatusUpload.Upload)
if title != "":
ProgramRunStatusUpload.programName.setText(title)
ProgramRunStatusUpload.programName.setDisabled(True)
# 生成星星列表
for i in [1, 1, 1, 1, 0]:
ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>"))
ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1])
ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
ProgramRunStatusUpload.programName.setPlaceholderText(QtCore.QCoreApplication.translate("U", "如果这个程序和程序名确实是合法还是检测到敏感词改为“NULL”即可"))
ProgramRunStatusUpload.fen.addItems(["0分", "1分", "2分", "3分", "4分", "5分"])
ProgramRunStatusUpload.fen.setCurrentIndex(4)
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
msgWidgetLayout.addWidget(upload, 3, 1)
msgWidget.setLayout(msgWidgetLayout)
ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusUpload.msgWindow.setWindowTitle(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusUpload.msgWindow.show()
def Upload():
try:
#if ProgramRunStatusUpload.sha1Value == "":
#ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
QtWidgets.QMessageBox.information(None, QtCore.QCoreApplication.translate("U", "提示"), requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL2Jhc2g=").decode("utf-8"), {
"BashName": ProgramRunStatusUpload.sha1Value,
"Fen": ProgramRunStatusUpload.fen.currentIndex()
}).json()["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(None, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
class InformationWindow():
def ShowWindow():
#webeng = False
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
aboutHtml = ""
try:
get = requests.get(f"{urlSources}/information/{fileName}.txt")
if get.status_code / 100 != 2 and get.status_code / 100 != 3:
int("Bad")
about = get.text
aboutHtml = str(about)
if not "<" in about:
# 非 Html 标签
for i in about.splitlines():
about += f"<p>{i}</p>\n"
#about = f"<pre>{about}</pre>"
about = f"<h1>关于“{choose}”的介绍</h1>\n{about}"
except:
traceback.print_exc()
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
try:
import requests as r
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
end = 5
starHtml = ""
if maxHead > 5:
for i in range(end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/BadStar.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/BadStar.svg' width=50>\n"
else:
for i in range(maxHead):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/Star.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/Star.svg' width=50>\n"
head = maxHead
for i in range(head, end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/UnStar.svg' width=50>"
else:
starHtml += f"<img src='{programPath}/Icon/UnStar.svg' width=50>"
about += f"\n<hr/><h1>评分情况</h1>\n<p align='center'>{starHtml}</p>\n<p align='center'>{tipsInfo}</p>"
message = QtWidgets.QDialog()
messageLayout = QtWidgets.QVBoxLayout()
if webeng:
informationText = QtWebEngineWidgets.QWebEngineView()
print(aboutHtml)
if aboutHtml[:7] == "Visit: ":
url = aboutHtml[7:].splitlines()[0]
print(url)
informationText.setUrl(QtCore.QUrl(url.strip()))
else:
#informationText.linkClicked.connect(lambda: print("a"))
try:
with open("/tmp/deepin-wine-runner-information.html", "w") as file:
file.write(about)
informationText.setUrl(QtCore.QUrl("file:///tmp/deepin-wine-runner-information.html"))
except:
traceback.print_exc()
informationText.setHtml(about)
#informationText.urlChanged.connect(lambda: informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io")))
else:
informationText = QtWidgets.QTextBrowser()
informationText.setHtml(about)
uploadFen = QtWidgets.QPushButton("提交评分")
uploadFen.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
#informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io"))
messageLayout.addWidget(informationText)
messageLayout.addWidget(uploadFen)
message.setWindowTitle(f"关于“{choose}”的介绍")
message.resize(int(message.frameSize().width() * 1.5), int(message.frameSize().height()))
message.setLayout(messageLayout)
#message.setWindowModality(ApplicationModal);
message.show()
message.exec_()
def Add(lists: list):
global pinLunLayout
pinLunLayout1 = QtWidgets.QVBoxLayout()
pinLunLayout = QtWidgets.QWidget()
pinLunLayout.setLayout(pinLunLayout1)
for i in range(pinLunLayout1.count()):
pinLunLayout1.removeItem(pinLunLayout1.itemAt(i))
for i in lists:
widget = QtWidgets.QWidget()
inLayout = QtWidgets.QGridLayout()
inLayout.addWidget(QtWidgets.QLabel("<hr>"), 0, 0, 1, 3)
inLayout.addWidget(QtWidgets.QLabel(f"<b>{i[0]}</b>"), 1, 0)
inLayout.addWidget(QtWidgets.QLabel(f"<p align='right'><b>第{i[1]}层</b></p>"), 1, 2)
inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3)
widget.setLayout(inLayout)
pinLunLayout1.addWidget(widget)
#pinLunLayout.addWidget(QtWidgets.QLabel("<hr/>"))
# pinLunLayout = widget
all = 0
now = 0
class ProgramRunStatusShow():
msgWindow = None
pingLunLayout = None
def ShowWindow():
global lists
global all
global now
global leftButton
global rightButton
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
try:
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
tipsInfo = ""
except:
#traceback.print_exc()
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本评分,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
starLayout = QtWidgets.QHBoxLayout()
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此提交评分"))
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0, 2, 1)
msgWidgetLayout.addLayout(starLayout, 0, 1, 2, 1)
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 0, 2)
#msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
msgWidgetLayout.addWidget(uploadButton, 1, 2)
end = 5
if maxHead > 5:
for i in range(end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/BadStar.svg' width=50>"))
else:
for i in range(maxHead):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/Star.svg' width=50>"))
head = maxHead
for i in range(head, end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>"))
pingLun = QtWidgets.QWidget()
msgWidgetLayout.addWidget(pingLun, 4, 0, 1, 3)
pingLunLayout = QtWidgets.QGridLayout()
pingLunInfo = QtWidgets.QTextEdit()
#pingLunInfo.document().setMaximumBlockCount(5)
uploadButton = QtWidgets.QPushButton("评论")
pingLunLayout.addWidget(pingLunInfo, 0, 0, 1, 3)
pingLunLayout.addWidget(uploadButton, 1, 2)
pingLunInfo.setPlaceholderText("""在此输入评论,须知:
1不得含有色情暴力侮辱等违法内容以及不得有广告推广等内容
2字数至少 15 但不得超过 250 评论内容最多 5 且评论内容将会进行审核意味着评论不会实时生效显示
3如果审核不通过将会被屏蔽并拉入黑名单以及公开发布 IP 地址评论前请三思""")
leftButton = QtWidgets.QPushButton("上一页")
rightButton = QtWidgets.QPushButton("下一页")
if maxHead == 0:
#pingLun.setDisabled(True)
pass
else:
# 显示最新的3条评论
try:
all = int(requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{urllib.request.quote(fileName)}/data.txt").text)
now = all - 3
print(all)
if all < 3:
start = 0
rightButton.setDisabled(True)
else:
start = all - 3
uploadList = []
for i in range(all - 1, start - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
Add(uploadList)
except:
traceback.print_exc()
try:
ProgramRunStatusShow.pingLunLayout = pingLunLayout
pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
except:
leftButton.setDisabled(True)
rightButton.setDisabled(True)
leftButton.clicked.connect(Left)
rightButton.clicked.connect(Right)
pingLunLayout.addWidget(leftButton, 3, 0)
pingLunLayout.addWidget(rightButton, 3, 2)
leftButton.setDisabled(True)
pingLun.setLayout(pingLunLayout)
msgWidget.setLayout(msgWidgetLayout)
uploadButton.clicked.connect(lambda: ProgramRunStatusShow.Upload(pingLunInfo.toPlainText(), fileName))
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况")
ProgramRunStatusShow.msgWindow.show()
def Upload(info, name):
print(f"脚本:{name}")
print(f"评论:{info}")
try:
res = requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL1BpbmdMdW4=").decode("utf-8"), {"PinLun": info, "Version": name}).json()
print(res)
if res["ExitCode"]:
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", res["Error"])
return
QtWidgets.QMessageBox.information(ProgramRunStatusShow.msgWindow, "提示", res["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", "提交失败")
def UpdateFen():
global now
fileName = ""
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
uploadList = []
for i in range(now + 2, now - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"https://code.gitlink.org.cn/gfdgd-xi/bashpinlun/raw/branch/master/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
#ProgramRunStatusShow.pingLunLayout.removeItem(ProgramRunStatusShow.pingLunLayout.itemAt(2))
ProgramRunStatusShow.pingLunLayout.removeWidget(pinLunLayout)
pinLunLayout.hide()
#pinLunLayout.
Add(uploadList)
#l = QtWidgets.QGridLayout()
#l.removeWidget(pinLunLayout)
ProgramRunStatusShow.pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
def Left():
global now
global all
if now + 6 >= all:
now = all - 3
leftButton.setDisabled(True)
rightButton.setEnabled(True)
else:
now += 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
print(all)
print(now)
def Right():
global now
if now - 3 < 0:
now = 0
rightButton.setDisabled(True)
leftButton.setEnabled(True)
else:
now -= 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
def UploadFen():
global lists
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
ProgramRunStatusUpload.ShowWindow(fileName, choose)
class Connect:
def SearchBotton_Clicked():
nmodel = QtGui.QStandardItemModel(window)
if ui.searchThings.text() == "":
# 显示全部内容
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
return
for i in lists:
# 显示筛选的内容
if ui.searchThings.text().upper() in i[0].upper():
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
def RunBotton_Clicked():
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
# 下载脚本
things = ""
try:
print(f"{urlSources}/{fileName}")
file = open("/tmp/wine-runner-auto-config.wsh", "w")
things = requests.get(f"{urlSources}/{fileName}").text
file.write(things)
file.close()
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", "无法获取配置文件")
return
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
print("a")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '/tmp/wine-runner-auto-config.wsh' --system")
# 执行脚本
print(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", "/tmp/wine-runner-auto-config.wsh", "--system"])
#process.waitForFinished()
def OpenFile_Triggered():
path = QtWidgets.QFileDialog.getOpenFileName(window, "提示", homePath, "配置文件(*.sh *.wsh);;全部文件(*.*)")
if path[0] == "":
return
try:
things = ""
with open(path) as file:
things = file.read()
except:
traceback.print_exc()
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '{path[0]}' --system")
# 执行脚本
OpenTerminal(f"env WINEARCH='{os.getenv('WINEARCH')}' WINEDEBUG='{os.getenv('WINEDEBUG')}' WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '{path[0]}'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", path[0], "--system"])
#process.waitForFinished()
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
def ChangeSources():
global urlSources
sources = [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action_2, ui.action_3, ui.action]
for i in range(0, len(sources)):
if sources[i].isChecked():
urlSources = urlSourcesList[i]
# 解析云列表
try:
# 获取列表
lists = json.loads(requests.get(f"{urlSources}/list.json").text)
# 解释列表并显示在 GUI 上
nmodel = QtGui.QStandardItemModel(window)
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
break
if __name__ == "__main__":
homePath = os.path.expanduser('~')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
wine = "deepin-wine6-stable"
wineprefix = f"{homePath}/.wine"
try:
wine = sys.argv[1]
wineprefix = sys.argv[2]
except:
pass
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
pinLunLayout = QtWidgets.QHBoxLayout()
ui.setupUi(window)
window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本")
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
window.show()
#ui.actionGitlink.setExclusive(True)
sourcesGroup = QtWidgets.QActionGroup(window)
sourcesGroup.addAction(ui.actionGitlink)
sourcesGroup.addAction(ui.actionGitee)
sourcesGroup.addAction(ui.actionGithub)
sourcesGroup.addAction(ui.action_IPv6)
sourcesGroup.addAction(ui.action_2)
sourcesGroup.addAction(ui.action_3)
sourcesGroup.addAction(ui.action)
sourcesGroup.triggered.connect(ChangeSources)
sourcesGroup.setExclusive(True)
#for i in [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action]:
#i.triggered.connect(ChangeSources)
#pass
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
#ui.uploadFen.clicked.connect(UploadFen)
ui.getInfoButton.clicked.connect(InformationWindow.ShowWindow)
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
ui.exitProgram.triggered.connect(window.close)
ui.getFen.clicked.connect(ProgramRunStatusShow.ShowWindow)
# 解析云列表
try:
# 获取列表
lists = json.loads(requests.get(f"{urlSources}/list.json").text)
# 解释列表并显示在 GUI 上
nmodel = QtGui.QStandardItemModel(window)
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
app.exec_()

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,15 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

View File

@ -1,75 +0,0 @@
#!/usr/bin/env python3
import os
import sys
import time
import json
import platform
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/../information.json"))
version = information["Version"]
thankText = ""
for i in information["Thank"]:
thankText += f"{i}\n"
programEnv = [
["WINEPREFIX", f"{os.path.expanduser('~')}/.wine"],
["WINE", "deepin-wine6-stable"],
["DANGER", "0"],
["PROGRAMPATH", programPath],
["VERSION", version],
["THANK", thankText.replace("\n", "\\n")],
["MAKER", "gfdgd xi"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["PLATFORM", platform.system()],
["DEBUG", str(int("--debug" in sys.argv))]
]
'''programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
["($DANGER)", "0"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["?", "0"],
["PLATFORM)", platform.system()],
["DEBUG)", str(int("--debug" in sys.argv))]
]'''
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv.append(["DANGER", "1"])
optionAll += 1
if os.getenv("WINE") != None:
programEnv.append(["WINE", os.getenv("WINE")])
if os.getenv("WINEPREFIX") != None:
programEnv.append(["WINEPREFIX", os.getenv("WINEPREFIX")])
# 生成可以使用的参数
commandEnv = ""
for i in programEnv:
commandEnv += f"{i[0]}=\"{i[1]}\" "
commandEnv += f"PATH=\"{programPath}/command:$PATH\" "
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash ")
exit()
command = ""
for i in sys.argv[1:]:
command += f"\"{i}\" "
print("Wine 运行器自动配置文件解析器(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash {command}")

View File

@ -1,123 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
#################################################################################################################
# 作者gfdgd xi
# 版本2.5.0
# 更新时间2022年11月20日
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
# 基于 Python3 的 PyQt5 构建
#################################################################################################################
#################
# 引入所需的库
#################
import os
import sys
import traceback
import updatekiller
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
desktopList = []
desktopUsrList = []
def GetDesktopList(path):
for i in os.listdir(path):
if os.path.isdir(f"{path}/{i}"):
GetDesktopList(f"{path}/{i}")
if os.path.isfile(f"{path}/{i}"):
try:
desktop = {}
with open(f"{path}/{i}") as file:
things = file.read()
for k in things.splitlines():
if not "=" in k:
continue
desktop[k[:k.index("=")].lower()] = k[k.index("=") + 1:]
desktopList.append([desktop["Name".lower()], desktop["Icon".lower()], desktop["Exec".lower()], f"{path}/{i}"])
except:
traceback.print_exc()
delButton.setEnabled(len(desktopList))
class DesktopList(QtCore.QThread):
show = QtCore.pyqtSignal(int)
def __init__(self) -> None:
super().__init__()
def run(self):
if os.path.exists(f"{homePath}/.local/share/applications"):
GetDesktopList(f"{homePath}/.local/share/applications")
self.show.emit(0)
def ShowDesktop(temp):
nmodel = QtGui.QStandardItemModel(window)
if not len(desktopList):
item = QtGui.QStandardItem("")
nmodel.appendRow(item)
y = 0
for i in desktopList:
#item = QtGui.QStandardItem(QtGui.QIcon(i[1]), i[0])
#nmodel.appendRow(item)
if os.path.exists(i[1]):
nmodel.setItem(y, 0, QtGui.QStandardItem(QtGui.QIcon(i[1]), i[0]))
else:
nmodel.setItem(y, 0, QtGui.QStandardItem(QtGui.QIcon.fromTheme(i[1]), i[0]))
nmodel.setItem(y, 1, QtGui.QStandardItem(i[2]))
nmodel.setItem(y, 2, QtGui.QStandardItem(i[3]))
y += 1
nmodel.setHeaderData(0, QtCore.Qt.Horizontal, "程序名")
nmodel.setHeaderData(1, QtCore.Qt.Horizontal, "运行路径")
nmodel.setHeaderData(2, QtCore.Qt.Horizontal, ".desktop 文件所在路径")
nmodel.setColumnCount(3)
desktopListView.setModel(nmodel)
def GetDesktopThread():
global desktop
desktop = DesktopList()
desktop.show.connect(ShowDesktop)
desktop.start()
def DeleteButton():
index = desktopListView.currentIndex().row()
if index < 0:
QtWidgets.QMessageBox.critical(window, "错误", "未选中任何项")
return
print(index)
print(desktopList[index][3])
#desktopListView.rowMoved(index)
#desktopListView.removeRow(index)
try:
os.remove(desktopList[index][3])
del desktopList[index]
ShowDesktop(0)
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
homePath = os.getenv("HOME")
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
#GetDesktopList(f"{homePath}/.local/share/applications")
#print(desktopList)
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget()
layout = QtWidgets.QGridLayout()
delButton = QtWidgets.QPushButton("删除指定图标")
delButton.clicked.connect(DeleteButton)
#desktopListView = QtWidgets.QListView()
desktopListView = QtWidgets.QTableView()
desktopListView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
desktopListView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)#(QAbstractItemView::SelectRows)
layout.addWidget(desktopListView, 0, 0, 1, 4)
layout.addWidget(delButton, 1, 3, 1, 1)
widget.setLayout(layout)
window.setCentralWidget(widget)
window.setWindowTitle("图标管理")
window.resize(int(window.frameGeometry().width() * 1.5), int(window.frameGeometry().height() * 1.2))
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
window.show()
GetDesktopThread()
app.exec_()

View File

@ -1,3 +0,0 @@
#!/bin/bash
echo -e "123456\n123456\n\n\n\n\n\n\n\n\n" | adduser "$1"
echo -e "123456\n123456\n" | passwd root

View File

@ -1,90 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
#################################################################################################################
# 作者gfdgd xi
# 版本2.5.0
# 更新时间2022年11月18日
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
# 基于 Python3 的 PyQt5 构建
#################################################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
if len(sys.argv) <= 1:
print("参数不足")
sys.exit(1)
if "--help" in sys.argv:
print("帮助:")
print("[exe path] [option]")
print("--json 以 json 格式输出")
print("-w [wine botton] [wine program path]")
jsonPrint = "--json" in sys.argv
if jsonPrint:
del sys.argv[sys.argv.index("--json")]
lists = []
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
checkDll = False
if "-w" in sys.argv:
wineCommand = sys.argv.index("-w")
wineBotton = os.getenv("HOME")
wineProgram = "deepin-wine6-stable"
checkDll = True
try:
wineBotton = sys.argv[wineCommand + 1]
wineProgram = sys.argv[wineCommand + 2]
except:
pass
badChar = [
"(", "?", "*", "!", ")", "&", "'", "\""
]
with open(sys.argv[1], "rb") as file:
while True:
things = file.readline()
if things == b"":
break
for n in [".dll", ".DLL"]:
if n.encode() in things:
# 提取 DLL 名称
for i in str(things[1: -2]).split("\\x"):
charBad = False
for b in badChar:
if b in i:
charBad = True
if n in i and not charBad and i[0] != "/":
name = i[2: ].replace(",{M", "").replace("+", "")
# 文件路径合法性检测
try:
dllName = name[:name.index(".dll") + 4]
except:
try:
dllName = name[:name.index(".DLL") + 4]
except:
dllName = name
if dllName.lower() == ".dll":
continue
if dllName in lists:
continue
if checkDll:
if jsonPrint:
if os.system(f"WINEPREFIX='{wineBotton}' {wineProgram} '{programPath}/Check.exe' '{dllName}' > /dev/null 2>&1"):
lists.append(dllName)
continue
else:
os.system(f"WINEPREFIX='{wineBotton}' {wineProgram} '{programPath}/Check.exe' '{dllName}'")
lists.append(dllName)
elif jsonPrint:
lists.append(dllName)
continue
else:
print(dllName)
lists.append(dllName)
if jsonPrint:
print(json.dumps(lists))

View File

@ -1,9 +0,0 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi
# 更新时间2022年11月19日
##########################################################################################
# 用于判断是否为 bash 解释器
installvcpp 4
info 提示 修复完成!重新检测即可

View File

@ -1,9 +0,0 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi
# 更新时间2022年11月03日
##########################################################################################
# 用于判断是否为 bash 解释器
installother 2
info 提示 修复完成!重新检测即可

View File

@ -1,9 +0,0 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi
# 更新时间2022年11月19日
##########################################################################################
# 用于判断是否为 bash 解释器
installvb 4
info 提示 修复完成!重新检测即可

View File

@ -1,451 +0,0 @@
{
"check": "",
"aaaamon.dll": "描述: aaaamon.dll是Aaaa监视软件动态链接库文件相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"activeds.dll": "描述: activeds.dll是活动目录服务相关应用程序COM接口。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"actxprxy.dll": "描述: actxprxy.dll是Marshalingx ActiveX控件COM接口相关文件。\n属于 Windows ActiveX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"adsmsext.dll": "描述: adsmsext.dll是LDAP协议支持相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"advert.dll": "描述: advert.dll是一个广告软件相关文件会在Internet Explorer浏览器上显示广告。\n属于 Aureate \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"amovie.dll": "描述: amovie.ocx是应用在Windows 9x平台的多媒体和视频播放技术相关文件。\n属于 IE \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ash.dll": "描述: ash.dll是Bankash木马相关文件该木马允许攻击者访问你的计算机窃取密码和个人数据。\n属于 Bankash Trojan \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ati_d3d.dll": "描述: ati_d3d.dll是ATI显示卡3D效果支持相关文件。\n属于 ATI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"avicap.dll": "描述: avicap.dll是Windows API应用程序接口用于截取AVI视频和摄像头及其它视频硬件设备的视频。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"avifil32.dll": "描述: avifil32.dll是AVI视频支持相关模块。\n属于 Microsoft AVI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"awfxrn32.dll": "描述: awfxrn32.dll是IFAX文件传输接口相关文件。\n属于 未知N/A \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"awlft332.dll": "描述: awlft332.dll是本地传真程序接口相关文件。\n属于 Windows 98,95 \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"awlhut32.dll": "描述: awlhut32.dll是ASN.1数据编码和解码相关文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"awutil32.dll": "描述: awutil32.dll是微软Microsoft传真应用程序相关文件。\n属于 Microsoft Fax \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"batmeter.dll": "描述: batmeter.dll是电池状态信息管理相关文件出现在BatMeterCapabilities、CreateBatMeter、DestroyBatMeter和PowerCapabilities等电池厂家的程序中。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"bib.dll": "描述: bib.dll是Adobe Acrobat界面相关文件。\n属于 Adobe Acrobat \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"browselc.dll": "描述: browselc.dll是Windows Shell壳浏览用户界面相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"btvid_32.dll": "描述: btvid_32.dll是Brooktree视频卡I2C和GPIO应用程序接口相关文件。\n属于 Brooktree \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cabinet.dll": "描述: cabinet.dll是Cab压缩包应用程序接口相关文件。\n属于 Microsoft Cabinet File \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"calwin32.dll": "描述: calwin32.dll是NetWare应用程序相关动态链接库文件。\n属于 NetWare \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cdaengine.dll": "描述: cdaengine.dll是WildTangent广告间谍软件相关文件。\n属于 WildTangent Spyware \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cdosys.dll": "描述: cdosys.dll是应用程序CDO相关文件。\n属于 CDO \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cdudflib.dll": "描述: cdudflib.dll是Direct CD光盘刻录软件相关支持文件。\n属于 DirectCD \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cmc.dll": "描述: cmc.dll是MAPI 1.0Windows消息应用程序接口公用消息调用相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d32-fw.dll": "描述: d32-fw.dll是雅虎通相关动态链接库文件文件用于使雅虎通能够透过防火墙。\n属于 Yahoo Messenger \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d3d8thk.dll": "描述: d3d8.dll是DirectX 8.0的Direct3D显示支持程序用于支持游戏。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d3dim700.dll": "描述: d3dim700.dll是微软Microsoft Direct3D图形系统相关模块。\n属于 Direct3D \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d3dxof.dll": "描述: d3dxof.dll是Direct3D文件格式相关文件。\n属于 Direct3D \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dao3032.dll": "描述: dao3032.dll是Microsoft Jet DAO数据访问相关动态链接库文件。\n属于 Microsoft Jet \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dciman32.dll": "描述: dciman32.dll是显示控制界面管理相关文件用于调制显示性能。\n属于 Display Control Interface Manager \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ddrawex.dll": "描述: ddrawex.dll是Direct Draw显示相关模块。\n属于 DirectDraw \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"deskcp16.dll": "描述: deskcp16.dll是Windows 9x操作系统显示配置相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"devenum.dll": "描述: devenum.dll是DirectShow相关模块用于声音输入、声音输出和MIDI设备。\n属于 DirectShow \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"devmgr.dll": "描述: devmgr.dll是Windows设备管理相关文件。\n属于 Windows Device Manager \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dispex.dll": "描述: dispex.dll是Visual Basic脚本COM接口相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dnsapi.dll": "描述: dnsapi.dll是DNS客户端应用程序接口API相关文件。\n属于 DNS Client \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dplay.dll": "描述: dplay.dll是DirectPlay播放器的支持文件。\n属于 Microsoft DirectPlay DLL \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dplayx.dll": "描述: dplayx.dll是DirectPlay相关支持文件。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"drmclien.dll": "描述: drmclien.dll是播放包相关系统库文件。\n属于 DRM \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dxtmsft.dll": "描述: dxtmsft.dll是DirectX媒体图像转换相关支持文件。\n属于 DirectX \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dxtrans.dll": "描述: dxtrans.dll是DirectX相关转换模块。\n属于 DirectX \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ecomwr.dll": "描述: ecomwr.dll是McAfee杀毒软件相关动态链接库文件。\n属于 McAfee \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"efsadu.dll": "描述: efsadu.dll是文件加密相关支持模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"encsplsh.dll": "描述: encsplsh.dll是微软Microsoft Encarta百科全书相关文件。\n属于 未知N/A \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"esent.dll": "描述: esent.dll是VBA相关运行时支持文件。\n属于 VBA \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"expsrv.dll": "描述: expsrv.dll是VBA运行时相关服务文件。\n属于 VBA \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"glide.dll": "描述: glide.dll是3DFX (Voodoo)图像显示卡相关文件。\n属于 Glide for Voodoo Banshee \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"googletoolbar1.dll": "描述: googletoolbar1.dll是google.com出品的搜索工具条相关文件。\n属于 Google Searching Facility \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"gpsb2.dll": "描述: gpsB2.dll是VX2间谍软件相关程序。\n属于 VX2 Spyware Module \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"hid.dll": "描述: hid.dll是USB的HID相关动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"hotplug.dll": "描述: hotplug.dll是微软Microsoft Windows安全硬件移除相关文件用于例如PCMCIA设备。\n属于 Microsoft Windows Opearting System \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"hpdcmon.dll": "描述: hpdcmon.dll是惠普HP打印机语言监视支持文件。\n属于 HP Printers \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iccvid.dll": "描述: iccvid.dll是Cinepak视频解码相关文件。\n属于 Cinepak Video \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"icm32.dll": "描述: icm32.dll是显示器色彩调节和计算相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"icqcore.dll": "描述: icqcore.dll是ICQ即时通讯软件图形用户界面相关文件。\n属于 ICQ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"icqmapi.dll": "描述: icqmapi.dll是ICQ即时通讯软件消息相关应用程序接口文件。\n属于 ICQ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"idapi32.dll": "描述: idapi32.dll是Borland数据库系统相关文件。\n属于 Borland Database Engine \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"idq.dll": "描述: idq.dll是ISAPI索引相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iedkcs32.dll": "描述: iedkcs32.dll是微软Microsoft Internet Explorer浏览器用户个性化相关文件。\n属于 Microsoft Internet Explorer \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ifc22.dll": "描述: ifc22.dll是罗技Logitech鼠标增强相关文件。\n属于 iFeel TouchSence Logitech mouse \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iforce2.dll": "描述: iforce2.dll是力反馈游戏手柄相关文件。\n属于 Games \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imeshare.dll": "描述: imeshare.dll是微软Microsoft Office输入法相关文件。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imgcmn.dll": "描述: imgcmn.dll是基本图形相关库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imgscan.dll": "描述: imgscan.ocx是ImagEdit扫描控制相关文件\n属于 Microsoft ImagEdit \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imm32.dll": "描述: imm32.dll是微软Microsoft Windows输入法管理相关文件。\n属于 Microsoft Windows (IMM) \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"inetcomm.dll": "描述: inetcomm.dll是微软即时通讯相关应用程序接口文件。\n属于 Microsoft Internet Messaging API \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"inetcplc.dll": "描述: inetcplc.dll是Internet控制面板相关动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 Yes \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"inetwh32.dll": "描述: inetwh32.dll是Blue Sky软件在线帮助相关文件。\n属于 Blue Sky DLL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ir50_32.dll": "描述: ir50_32.dll是Intel Indeo视频解码相关文件。\n属于 Indeo video \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"itss.dll": "描述: itss.dll是微软Microsoft储存系统相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"jgdw400.dll": "描述: jgdw400.dll是AOL .ART格式文件相关支持文件。\n属于 AOL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"jit.dll": "描述: jit.dll是微软Java运行时相关动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"jpeg1x32.dll": "描述: jpeg1x32.dll是JPEG图像相关库文件。\n属于 Microsoft JPEG \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"kbdus.dll": "描述: kbdus.dll是美式键盘相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"lmf32v.dll": "描述: lmf32v.dll是Vertical Theories的广告程序。该程序监视你的浏览行为并回传到其服务器进行分析。该进程也会弹出广告。\n属于 Hyperlinker Spyware Module \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"loadpowerprofile.dll": "描述: LoadPowerProfile (powrprof.dll)是微软Microsoft Windows 9x电源管理控制面板相关模块。\n属于 Microsoft Windows Operating System \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"localspl.dll": "描述: localspl.dll是本地打印机相关动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"locwin32.dll": "描述: locwin32.dll是Novell Netware客户端相关文件。\n属于 Novell NetWare Client API \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ls3df.dll": "描述: ls3df.dll是Mafia计算机游戏相关文件。\n属于 Game Mafia \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"lsasrv.dll": "描述: lsasrv.dll用于本地安全密码验证相关动态链接库文件。\n属于 Microsoft Windows Operating System \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ltwrp10n.dll": "描述: ltwrp10n.dll是Win32 LEADTOOLS图像库文件。\n属于 LEADTOOLS \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"lz32.dll": "描述: lz32.dll是LZ解压和压缩相关文件。\n属于 LZ Expand/Compress \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"lzexpand.dll": "描述: lz32.dll是LZ压缩格式解压和压缩相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mapistub.dll": "描述: mapistub.dll是Windows NT的MAPI相关文件。\n属于 MAPI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mapobj90.dll": "描述: mapobj90.dll是MapPoint相关软件。它是一个地图和分析工具。\n属于 MapPoint \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"maxlink3.dll": "描述: maxlink3.dll是Visioneer扫描仪相关库文件。\n属于 未知N/A \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"maxrast.dll": "描述: maxrast.dll是Visioneer公司相关库文件用于支持图像。\n属于 PaperPort \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"maxutil.dll": "描述: maxutil.dll是Visioneer扫描仪相关库文件。\n属于 PaperPort \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mdvmqlt.dll": "描述: mdvmqlt.dll是EA公司Battle Field 1942游戏相关文件。\n属于 Game BattleField \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc42loc.dll": "描述: mfc42loc.dll是MFC应用程序本地化资源相关文件。\n属于 MFC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc42u.dll": "描述: mfc42u.dll是微软MFC程序相关动态链接库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfcuia32.dll": "描述: mfcuia32.dll是对象链接与嵌入OLE的ANSI和Unicode对话框支持相关文件。\n属于 OLE \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mmcndmgr.dll": "描述: mmcndmgr.dll是MMC Node管理COM接口相关动态链接库文件。\n属于 MMC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mmefxe.dll": "描述: mmefxe.ocx是微软多媒体控制相关COM接口文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"moricons.dll": "描述: moricons.dll是Windows NT图标资源文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mplvpx.dll": "描述: mplvpx.dll是微软Microsoft Media Player音乐回放相关动态链接库文件。\n属于 Microsoft Media Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mprddm.dll": "描述: mprddm.dll微软Microsoft路由和RAS拨号管理相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msacm.dll": "描述: msacm.dll是微软音频压缩相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscat32.dll": "描述: mscat32.dll是MakeCat.exe相关动态链接库文件。\n属于 MakeCat \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscms.dll": "描述: mscms.dll是微软图像色彩管理系统相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscomctl.dll": "描述: mscomctl.ocx是公用ActiveX插件控制模块。\n属于 Windows ActiveX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msconf.dll": "描述: msconf.dll是NetMeeting网络会议程序相关文件。\n属于 Netmeeting \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msdart32.dll": "描述: msdart32.dll是对象链接与嵌入数据库访问相关模块。\n属于 OLE DB \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msdtcprx.dll": "描述: msdtcprx.dll是微软Microsoft分布式负载平衡相关文件。\n属于 MS DTC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msgr3ge.dll": "描述: msgr3ge.dll是微软Office产品德语字符检查支持相关文件。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msgrru32.dll": "描述: msgrru32.dll是微软Office产品俄语字符检查相关文件。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msgsvc.dll": "描述: msgsvc.dll是NT信使服务管理相关文件用于发送和接收信使消息。\n属于 Alerter \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mshtmled.dll": "描述: mshtmled.dll是微软HTML编辑相关模块。\n属于 HTML \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msieftp.dll": "描述: msieftp.dll是微软IE浏览器支持FTP访问相关文件。\n属于 Internet Explorer \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msjet40.dll": "描述: msjet40.dll是Microsoft Jet数据库相关文件。\n属于 Microsoft Jet Engine \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msjt3032.dll": "描述: msjt3032.dll是微软Microsoft Jet数据库相关文件。\n属于 Microsoft Jet Engine \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msjter35.dll": "描述: msjter35.dll是微软Microsoft Jet数据库引擎相关文件。\n属于 Microsoft Jet Engine \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msls31.dll": "描述: msls31.dll是Internet Explorer浏览器和字处理程序Unicode字符支持相关文件。\n属于 IE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msnet32.dll": "描述: msnet32.dll是微软Microsoft 32位网络应用程序接口相关文件。\n属于 Microsoft Network \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msoert2.dll": "描述: msoert2.dll是微软Microsoft Outlook Express动态链接库文件。\n属于 Outlook Express \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msorcl32.dll": "描述: msorcl32.dll是Oracle 微软ODBC数据库相关文件。\n属于 ODBC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mspdb60.dll": "描述: mspdb60.dll是Microsoft Visual Studio编程数据库支持相关文件。.\n属于 Visual Studio \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msrating.dll": "描述: msrating.dll是微软Microsoft网络安全等级和本地用户管理相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msrclr40.dll": "描述: msrclr40.dll是DAO 3.6数据库相关文件。\n属于 Microsoft Jet \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msrdo20.dll": "描述: msrdo20.dll是ODBC数据库支持相关文件。\n属于 ODBC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mssp3ge.dll": "描述: mssp3ge.dll是Lingsoft CSAPI字符检查相关文件。\n属于 Lingsoft \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msspel2.dll": "描述: msspel2.dll是Word 6.0字符校对检查相关文件。\n属于 Word \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mswsock.dll": "描述: mswsock.dll是Winsock网络服务相关文件。\n属于 Windows Socket \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mydocs.dll": "描述: mydocs.dll是我的文档文件夹用户解码相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"n32userl.dll": "描述: n32userl.dll是Norton AntiVirus反病毒软件相关模块。\n属于 Norton Antivirus \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netapi.dll": "描述: netapi.dll是Windows网络应用程序接口相关文件用于访问微软网络。\n属于 Microsoft network \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netdtect.dll": "描述: netdtect.dll是网卡自动检测相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netevent.dll": "描述: netevent.dll是网络错误消息相关提醒模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netman.dll": "描述: netman.dll是网络连接管理相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netrap.dll": "描述: netrap.dll是网络远程管理协议相关模块。.\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netshell.dll": "描述: netshell.dll是网络连接管理Shell壳程序。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netwin32.dll": "描述: netwin32.dll是Novell NetWare网络库文件。\n属于 Novell NetWare Net Library \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"newdotnet.dll": "描述: newdotnet.dll是New.net应用程序相关动态链接库文件。\n属于 New.net \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ntdsapi.dll": "描述: ntdsapi.dll是分布式计算机处理环境的目录服务COM接口模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nvqtwk.dll": "描述: NvQTwk.dll是Nvidia显示卡相关库文件。\n属于 Nvidia Graphics Library Module \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nwcalls.dll": "描述: nwcalls.dll是Novell NetWare应用程序接口相关文件用于NCP连接文件服务器和客户端计算机。\n属于 NetWare API \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"odbcbcp.dll": "描述: odbcint.dll是ODBC数据库查询相关模块。\n属于 ODBC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"odbcint.dll": "描述: odbcint.dll是ODBC数据库查询相关模块。\n属于 Microsoft ODBC Resource DLL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"odbcjt32.dll": "描述: odbcint.dll是微软ODBC数据库查询相关模块。\n属于 Microsoft ODBC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ole2.dll": "描述: ole2.dll是对象链接与嵌入相关模块。\n属于 Microsoft OLE 2.3.2 16/32 Interoperability Library \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"oledlg.dll": "描述: ole2.dll是对象链接与嵌入OLE相关模块用于公共对话框。\n属于 Microsoft OLE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"p2bbnd.dll": "描述: p2bbnd.dll是Crystal数据报告相关模块。\n属于 Crystal Report \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"p2sodbc.dll": "描述: p2sodbc.dll是ODBC数据Crystal报告相关模块。\n属于 Crystal Report \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"passfilt.dll": "描述: passfilt.dll是密码策略和保护相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pdh.dll": "描述: pdh.dll是登陆和硬件统计相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pdm.dll": "描述: pdm.dll是进程脚本调试管理相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"perfctrs.dll": "描述: perfctrs.dll是Windows登陆和硬件统计相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"perfproc.dll": "描述: perfproc.dll是登陆和硬件统计相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pifmgr.dll": "描述: pifmgr.dll是windows图标资源管理相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pnen3260.dll": "描述: pnen3260.dll是RealMedia Player播放器相关模块。\n属于 RealMedia \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pngu3263.dll": "描述: pngu3263.dll是Realnetworks RealPlayer播放器图形用户界面相关模块。\n属于 RealPlayer \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pngu3266.dll": "描述: pngu3266.dll是RealMedia Player播放器相关模块。\n属于 RealMedia \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pperr.dll": "描述: pperr.dll是Visioneer 5300 USB接口扫描器设备相关模块。\n属于 PaperPort \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"printui.dll": "描述: printui.dll是命令行方式安装打印机相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"prismxl.dll": "描述: prismxl.exe是Lanovation PrismXL相关服务用于进行远程控制。\n属于 Lanovation PrismXL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pstprx32.dll": "描述: pstprx32.dll是微软Microsoft Outlook代理储存管理相关文件。\n属于 Microsoft Outlook \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ra32.dll": "描述: ra32.dll是RealAudio音频支持相关文件。\n属于 RealAudio \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ragui32.dll": "描述: ragui32.dll是RealAudio音频高级支持文件。\n属于 RealAudio \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rasapi16.dll": "描述: rasapi16.dll是16位网络拨号应用程序接口相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rasman.dll": "描述: rasman.dll是远程控制相关软件模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rasscrpt.dll": "描述: rasscrpt.dll是网络拨号脚本相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"regsvr32.dll": "描述: regsvr32.dll是DLL添加辅助相关文件用于注册和反注册DLL文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rmoc3260.dll": "描述: rmoc3260.dll是RealPlayer和Windows Media Player媒体回放相关COM接口文件。\n属于 Real Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rnaui.dll": "描述: rnaui.dll是网络拨号设置库文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rnr20.dll": "描述: rnr20.dll是微软Microsoft Windows Sockets 2.0的TCP/IP协议相关服务。\n属于 Windows Socket \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rpcss.dll": "描述: rpcss.dll是分布式COM服务相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rpmn3260.dll": "描述: rpmn3260.dll是RealNetworks公司RealPlayer产品动态链接库文件。\n属于 Real Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rsabase.dll": "描述: rsabase.dll是Windows 2000加密服务相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rsaenh.dll": "描述: rsaenh.dll是微软Microsoft增强加密服务相关文件用于128位加密。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rtutils.dll": "描述: rtutils.dll是一个追踪API接口用于输出诊断信息到微软Microsoft Windows NT/Windows 2000路由和远程控制服务。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rupdate.dll": "描述: rupdate.dll是McAfee产品相关文件用于自动升级。\n属于 McAfee Products \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"samlib.dll": "描述: samlib.dll是安全认证管理应用程序接口API相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sendmail.dll": "描述: sendmail.dll是用于通过网站发送邮件的库文件。\n属于 Microsoft Windows IIS \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sens.dll": "描述: sens.dll是系统事件提醒服务相关库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sensapi.dll": "描述: sensapi.dll是系统事件提醒服务相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"setupwbv.dll": "描述: setupwbv.dll用于检查并修复Internet Explorer配置。\n属于 Microsoft Internet Explorer \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sfc.dll": "描述: sfc.dll用于校验和监视系统文件变更。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sfcfiles.dll": "描述: sfcfiles.dll是系统文件监视和验证相关程序。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sh31w32.dll": "描述: sh31w32.dll用于内存利用情况。\n属于 SmartHeap \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shell.dll": "描述: shell.dll是Windows Shell壳应用程序接口相关库文件用于打开网页和文件。\n属于 Microsoft Windows Shell \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shimgvw.dll": "描述: shimgvw.dll用于图像显示的COM接口程序。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"softpub.dll": "描述: softpub.dll是用于支持加密的动态链接库文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"speer.dll": "描述: Speer.dll是Solid Peer间谍软件相关文件。\n属于 Solid Peer spyware \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"spin32.dll": "描述: spin32.ocx是Visual Basic语言的ActiveX控件。\n属于 Microsoft Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"spmsg.dll": "描述: spmsg.dll是用于显示service packs补丁包消息的文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sqlsrv32.dll": "描述: sqlsrv32.dll是用于微软SQL服务ODBC驱动相关文件。\n属于 Microsoft SQL Server ODBC Driver \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ss32x25.dll": "描述: ss32x25.ocx是FarPoint技术相关文件用于显示控制。\n属于 FarPoint \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"stclient.dll": "描述: stclient.dll是COM+配置安全客户端相关文件。\n属于 Microsoft COM+ \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"stobject.dll": "描述: stobject.dll是资源文件用于图标等。\n属于 Microsoft Systray \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"storprop.dll": "描述: storprop.dll是用于更改DVD读取区域相关动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"streamci.dll": "描述: streamci.dll是安装流媒体硬件设备相关文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"sysmon.dll": "描述: sysmon.ocx是系统性能监视的ActiveX控件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"system86.dll": "描述: system86.dll是内存分配库文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tapi.dll": "描述: tapi.dll是微软Windows电话服务相关模块。\n属于 Windows Telephony \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tdc.dll": "描述: tdc.ocx是Visual Basic应用程序相关表列数据ActiveX控件模块。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"thumbvw.dll": "描述: thumbvw.dll是文档缩略图察看相关动态链接库文件用于在资源管理器中察看文档、JPEG文件等。\n属于 Thumbnail View \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tl32v20.dll": "描述: tl32v20.dll是DiskKeeper软件保护锁相关文件。\n属于 DiskKeeper \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"toolhelp.dll": "描述: toolhelp.dll是Windows默认数组应用程序接口相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"traffic.dll": "描述: traffic.dll是微软飞行模拟软件第三方模块。\n属于 Flight Simulator \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tsd32.dll": "描述: tsd32.dll是音频编码和解码相关文件。\n属于 TrueSpeech \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"txfaux.dll": "描述: txfaux.dll是微软Microsoft分布式处理相关文件。\n属于 MSDTC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"unrar.dll": "描述: unrar.dll是RAR压缩包解压相关文件。\n属于 UnRAR \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"url.dll": "描述: url.dll是Internet快捷壳扩展相关应用程序接口文件。\n属于 IE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"usp10.dll": "描述: usp10.dll是字符显示脚本应用程序接口相关文件。\n属于 Uniscribe \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vb5stkit.dll": "描述: vb5stkit.dll是VB应用程序创建快捷方式应用程序接口相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vba332.dll": "描述: vba322.dll是Microsoft Office自动控制相关模块。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vbajet32.dll": "描述: vbajet32.dll是Visual Basic应用程序开发相关文件。\n属于 VBA \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ver.dll": "描述: ver.dll是Windows版本检测应用程序接口相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"version.dll": "描述: version.dll是Windows NT系统版本检测应用程序接口相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vfpodbc.dll": "描述: vfpodbc.dll是Visual FoxPro应用程序ODBC数据管理应用程序接口相关文件。\n属于 ODBC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vsnetutils.dll": "描述: vsnetutils.dll是ZoneLabs ZoneAlarm防火墙软件相关文件。\n属于 ZoneAlarm \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wab32res.dll": "描述: wab32res.dll是微软地址薄相关文件用于Outlook和Outlook Express储存Email邮件地址和其它联系信息。\n属于 Outlook \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"webhits.dll": "描述: webhits.dll是网络服务应用程序接口相关模块用于统计点击率高的HTML页面。\n属于 ISAPI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"win87em.dll": "描述: win87em.dll是Windows应用程序浮点运算相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winnls.dll": "描述: winnls.dll是特殊字符输入扩展相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winplay.dll": "描述: winplay.dll是游戏软件多媒体播放解码回放相关文件。\n属于 Game \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winscard.dll": "描述: winscard.dll是个人计算机对智能卡读取相关程序。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wkssvc.dll": "描述: wkssvc.dll是本地系统进行远程文件打印相关服务文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wldap32.dll": "描述: wldap32.dll是LDAP应用程序接口相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wlnotify.dll": "描述: wlnotify.dll是对Windows事件提醒相关应用程序接口例如Windows登陆、关机、注销等。\n属于 Winlogon \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wmicore.dll": "描述: wmicore.dll是WMI服务相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wmmutil.dll": "描述: wmmutil.dll是Windows Movie Maker影像处理程序支持文件。\n属于 Windows Movie Maker \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wow32.dll": "描述: wow32.dll是16位代码调用32位代码应用程序接口。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wshom.dll": "描述: wshom.ocx是Windows本地脚本对象运行时相关文件。\n属于 Windows Script Host \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wsnmp32.dll": "描述: wsnmp32.dll是SNMP管理应用程序接口用于发送和接收SNMP精灵的请求。\n属于 WinSNMP \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wtsapi32.dll": "描述: wtsapi32.dll是终端服务的应用程序接口用于包括(1) 管理终端服务,(2)设置和恢复终端服务用户的配置信息,(3)应用终端服务虚拟频道。\n属于 Windows Terminal Server \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wuv3is.dll": "描述: wuv3is.dll是Windows Update升级相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"xolehlp.dll": "描述: xolehlp.dll是Microsoft分布式平衡负载相关应用程序接口文件。\n属于 MSDTC \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ac1st15.dll": "描述: ac1st15.dll是AutoCAD、AutoCAD LT、KeyPLANTING和KeySCAPE等软件动态链接库该文件是Autodesk公司出品。\n属于 AutoCAD \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"binkw32.dll": "描述: binkw32.dll是BINK视频解码器相关进程用于压缩视频回放例如游戏中的视频。\n属于 Bink Video Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"bwcc.dll": "描述: bwcc.dll是Borland Windows控件相关动态链接库文件。\n属于 Borland C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"bwcc32.dll": "描述: bwcc32.dll是Borland Windows控件相关动态链接库文件。\n属于 Borland C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cards.dll": "描述: cards.dll是Windows纸牌游戏相关文件。\n属于 Game Windows Solitare \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cctrust.dll": "描述: cctrust.dll是Symantec公司ccTrust公用客户端动态链接库文件。\n属于 Symantec Products \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cd_clint.dll": "描述: cd_clint.dll是Cydoor公司动态链接库文件。\n属于 CYDOOR \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cdonts.dll": "描述: cdonts.dll协同数据对象界面相关文件。\n属于 CDO \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cncs232.dll": "描述: cncs232.dll是Europress和IMSI公司多媒体库文件用于支持它们的游戏。\n属于 Games Multimedia Fusion \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cncs32.dll": "描述: cncs32.dll是create游戏图像相关动态链接库文件。\n属于 Game Factory \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"core.dll": "描述: core.dll是SuperScape 3D Viewer察看器相关动态链接库。\n属于 Viscape Universal \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d3d9.dll": "描述: d3d9.dll是DirectX 9的动态链接库用于支持Windows多媒体和游戏。\n属于 DirectX \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"disktool.dll": "描述: disktool.dll是DiskTool软件动态链接库文件它是一款系统管理软件用于监视磁盘状态和避免数据文件储存问题。\n属于 Disktool \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"eax.dll": "描述: eax.dll是EAX环绕音效特性相关库文件。\n属于 EAX \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"egnsengine.dll": "描述: egnsengine.dll是Gator GAIN间谍软件相关文件。\n属于 Gator GAIN \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"fm20.dll": "描述: fm20.dll是微软表单创建相关动态链接库文件。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"gapi32.dll": "描述: gapi32.dll是微软邮件协议相关文件。\n属于 Microsoft Exchange \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"glide2x.dll": "描述: glide2x.dll是3DFX (Voodoo)显示卡Glide 3D驱动程序相关文件。\n属于 Glide for Voodoo Banshee \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"glide3x.dll": "描述: glide3x.dll是3DFX (Voodoo)显示卡Glide 3D驱动程序相关文件。\n属于 Glide for Voodoo Banshee \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"glu32.dll": "描述: glide2x.dll是OpenGL图像相关动态链接库文件。\n属于 Microsoft OpenGL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"hhctrl.dll": "描述: hhctrl.ocx是Microsoft帮助文档界面相关文件。\n属于 Microsoft HTML Help Control \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"idle.dll": "描述: idle.dll是Microsoft Visual C++无功分量部分相关文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iepeers.dll": "描述: iepeers.dll是微软Microsoft Internet Explorer浏览器库文件。\n属于 Microsoft Internet Explorer \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ijl15.dll": "描述: ijl15.dll是IntelJPG图像压缩相关库文件。\n属于 Intel JPEG Library \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imgedit.dll": "描述: imgedit.ocx是微软图像处理相关文件。\n属于 Microsoft ImagEdit \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"jscript.dll": "描述: jscript.dll是Microsoft JavaScript脚本支持相关文件。\n属于 Microsoft JScript \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"libeay32.dll": "描述: libeay32.dll是OpenSSL加密特性相关文件用于通过网络加密传输。\n属于 OpenSSL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"maxcodec.dll": "描述: maxcodec.dll是ScanSoft PaperPort软件图像压缩和解压相关模块。\n属于 PaperPort \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"maxkernl.dll": "描述: maxkernl.dll是ScanSoft PaperPort Visioneer扫描仪相关库文件。\n属于 PaperPort \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc30.dll": "描述: mfc30.dll是微软Microsoft MFC程序库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc40.dll": "描述: mfc40.dll是微软Microsoft MFC程序库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc42.dll": "描述: mfc42.dll是微软Microsoft MFC程序库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc42d.dll": "描述: mfc42d.dll是MFCDLL共享库文件用于支持调试版本的MFC程序。\n属于 MFC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfc70.dll": "描述: mfc70.dll是微软Microsoft MFC程序相关库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfcans32.dll": "描述: mfcans32.dll用于对对象链接和嵌入OLE的Unicode和MBCS字符支持。\n属于 OLE \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mfco42d.dll": "描述: mfco42d.dll是MFC OLE调试版本动态链接库文件。\n属于 MFC \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mhputilu.dll": "描述: mhputilu.dll是微软Microsoft Picture It图像软件动态链接库文件。\n属于 Microsoft Picture It! Publishing 2001 \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mlang.dll": "描述: mlang.dll是多语言支持动态链接库文件。用于转换网络字符集为Unicode。\n属于 IE \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mplapx.dll": "描述: mplapx.dll是微软Microsoft Media Player音乐回放相关模块。\n属于 Microsoft Media Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mrtrate.dll": "描述: mrtrate.dll是Intuit Quicken动态链接库文件。\n属于 Rate Sensing Manager \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscomm32.dll": "描述: mscomm32.ocx是ActiveX公用控制模块用于例如Visual Basic 6.0程序的MSComm控制。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msdxm.dll": "描述: msdxm.ocx是Windows Media Player播放器ActiveX控制相关文件。\n属于 Windows Media Player \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mshtml.dll": "描述: mshtml.dll是HTML解释器相关模块。\n属于 HTML \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msjet35.dll": "描述: msjet35.dll是微软Microsoft Jet数据引擎主要文件。该文件用于向Microsoft Access数据库读写数据。\n属于 Microsoft Jet Engine \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mso9.dll": "描述: mso9.dll是微软Microsoft Office 2000办公软件套装的一部分。\n属于 Office 2000 \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mso97.dll": "描述: mso97.dll是微软Microsoft Office 2000软件套装的一部分。\n属于 Office 2000 \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msoe.dll": "描述: msoe.dll是Outlook Express邮件程序相关模块。\n属于 Outlook Express \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mss32.dll": "描述: mss32.dll是Miles声音播放系统库文件用于WinAMP等多媒体程序音乐回放和声音特效。\n属于 WinAmp \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msscript.dll": "描述: msscript.ocx是Visual Basic 6.0应用程序脚本控制的一部分,用于运行时库。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mssp232.dll": "描述: mssp232.dll是微软Microsoft Office软件字符检查相关文件。\n属于 Microsoft Office \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msspell3.dll": "描述: msspell3.dll是文档字符检查相关模块。\n属于 Word \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msstdfmt.dll": "描述: msstdfmt.dll是微软标准数据格式对象相关动态链接库文件。\n属于 Visual Studio \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvbvm50.dll": "描述: msvbvm50.dll是微软Microsoft Visual Basic虚拟机相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvbvm60.dll": "描述: msvbvm60.dll是微软Microsoft Visual Basic虚拟机相关模块。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcirt.dll": "描述: msvcirt.dll是微软C语言程序运行库相关文件用于例如打印。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcirtd.dll": "描述: msvcirtd.dll是用户选择进行调试版本编译时所使用的运行库文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcp50.dll": "描述: msvcp50.dll是标准的C运行库相关程序。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcp60.dll": "描述: msvcp60.dll是标准的C运行库程序。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcp70.dll": "描述: msvcp70.dll是.Net的C运行库相关文件。\n属于 Microsoft .NET \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcr70.dll": "描述: msvcr70.dll是微软C运行库相关程序。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcrt.dll": "描述: msvcrt.dll是标准的微软C运行库文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcrt10.dll": "描述: msvcrt10.dll是微软标准C运行库相关文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcrt20.dll": "描述: msvcrt20.dll是微软标准C运行库相关文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcrt40.dll": "描述: msvcrt40.dll是微软标准C运行库相关文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvcrtd.dll": "描述: msvcrtd.dll是微软编译程序调试版本相关文件。\n属于 Visual C++ \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msvfw32.dll": "描述: msvfw32.dll是微软BMP位图压缩和解压缩相关文件用于Microsoft Video视频。\n属于 Microsoft Video \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mswinsck.dll": "描述: mswinsck.ocx是Visual Basic语言的socket编程相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msxml.dll": "描述: msxml.dll是Internet Explorer 4.0或更高版本的浏览器相关文件用于解释XML文档。\n属于 XML \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"npdocbox.dll": "描述: NPDocBox.dll是Adobe Acrobat插件相关文件为Netware和Internet Explorer浏览器安装。\n属于 Adobe Acrobat \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nvcpl.dll": "描述: nvcpl.dll是NVIDIA显示卡相关动态链接库文件。\n属于 NVIDIA drivers \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nvcpldaemon.dll": "描述: NvCplDaemon (NvQTwk.dll)是Nvdia显示卡相关文件。\n属于 NVidia Graphics Library Module \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nvmctray.dll": "描述: nvmctray.dll是NVidia显示卡相关文件。\n属于 NVidia Multimedia \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nvmediacenter.dll": "描述: nvmctray.dll是NVidia显示卡相关文件。\n属于 NVidia Multimedia \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"nwnp32.dll": "描述: nwnp32.dll是Novell NetWare网络支持相关链接库文件。\n属于 Novell Network \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"odbc32.dll": "描述: odbc32.dll是ODBC数据库查询相关文件。\n属于 ODBC DLL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"oleacc.dll": "描述: oleacc.dll是微软Microsoft Active Accessibility相关动态链接库文件。\n属于 Microsoft Active Accessibility \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"oleaut32.dll": "描述: oleaut32.dll是对象链接与嵌入OLE相关文件。\n属于 Microsoft OLE DLL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"omi9.dll": "描述: omi9.dll是邮件程序MAPI特性相关文件用于例如Outlook。\n属于 Microsoft MAPI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"opengl32.dll": "描述: opengl32.dll是微软OpenGL特性相关动态链接库文件。\n属于 Microsoft OpenGL \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"oscore.dll": "描述: oscore.dll是AOL即时通讯软件相关文件。\n属于 AOL Messenger \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"p5dll.dll": "描述: p5dll.dll是P5Device相关动态链接库文件。\n属于 P5Device \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pcdlib32.dll": "描述: pcdlib32.dll是柯达Kodak产品相关文件用于设备数据传输。\n属于 Kodak Photo \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pcre.dll": "描述: pcre.dll是Perl语言相关库文件。\n属于 Perl \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pgsdk.dll": "描述: pgsdk.dll是微软图形SDK开发包相关动态链接库文件。\n属于 Microsoft Presentation Graphics SDK \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pncrt.dll": "描述: pncrt.dll是C语言开发界面相关运行时文件。\n属于 Windows \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pstprx.dll": "描述: pstprx.dll是Windows CE Outlook数据同步相关文件。\n属于 Outlook \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"quartz.dll": "描述: quartz.dll是DirectShow相关库文件是DirectX的一部分。\n属于 Microsoft DirectX \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"riched20.dll": "描述: riched20.dll是字符编辑器相关文件。\n属于 RichEdit \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"riched32.dll": "描述: riched32.dll是字符编辑器相关文件。\n属于 RichEdit \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"richtx32.dll": "描述: richtx32.ocx是微软Microsoft字符编辑器控制相关程序用于字符对话框对象高级编辑。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"schannel.dll": "描述: schannel.dll是Internet Explorer 3.x或者4.x浏览器128位加密相关文件。\n属于 Microsoft Internet Explorer \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"setup.dll": "描述: setup.dll是流行的安装程序相关支持文件。\n属于 TextBridge Pro 96 \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"setupapi.dll": "描述: setupapi.dll是流行的安装程序支持相关文件。\n属于 Microsoft Windows Setup \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"smackw32.dll": "描述: smackw32.dll是Smacker视频解码器相关文件。\n属于 Games Media Smacker \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"storm.dll": "描述: storm.dll是暴雪游戏相关动态链接库文件出现在StarCraft和Diablo等游戏中。\n属于 Games Blizzard \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"symstore.dll": "描述: symstore.dll是Symantec公司设置相关动态链接库文件。\n属于 Symantec \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tabctl32.dll": "描述: tabctl32.ocx是一个ActiveX控制模块用于SSTab控制和Tabbed对话框控制。\n属于 OLE \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"threed32.dll": "描述: threed32.ocx是Sheridon 3D控制对象相关文件用于渲染3D图像。\n属于 Sheridon \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"topsearch.dll": "描述: topsearch.dll是Kazaa.exe的间谍软件相关文件。\n属于 Kazaa \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tsbyuv.dll": "描述: tsbyuv.dll是东芝Toshiba视频播放解码器相关程序。\n属于 Toshiba Video \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"twain.dll": "描述: twain.dll是静态图像应用程序接口相关文件。\n属于 Twain Source Manager \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vb40016.dll": "描述: vb40016.dll是Visual Basic运行时相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vb40032.dll": "描述: vb40032.dll是Visual Basic运行时相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vb6fr.dll": "描述: vb6fr.dll是Visual Basic语言运行时相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vb6stkit.dll": "描述: vb6stkit.dll是Visual Basic应用程序接口API相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vbrun100.dll": "描述: vbrun100.dll是Visual Basic语言运行时相关程序。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vbrun200.dll": "描述: vbrun200.dll是Visual Basic语言运行时相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vbrun300.dll": "描述: vbrun300.dll是Visual Basic语言运行时相关文件。\n属于 Visual Basic \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vbscript.dll": "描述: vbscript.dll是VBScript脚本相关支持文件。\n属于 VBScript \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vsutil.dll": "描述: vsutil.dll是ZoneLabs ZoneAlarm软件相关文件。\n属于 ZoneAlarm \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wab.dll": "描述: wab.dll是微软Microsoft地址薄相关文件用于储存Outlook和Outlook Express的Email地址和其它信息。\n属于 Outlook \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wab32.dll": "描述: wab32.dll是微软Microsoft地址薄相关文件用于储存Outlook和Outlook Express的Email邮件地址和其它联系信息。\n属于 Outlook \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"weputil.dll": "描述: weputil.dll是Windows娱乐包的相关文件。\n属于 Windows Entertainment Pack \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winaspi.dll": "描述: winaspi.dll是ASPI驱动相关文件用于控制CD-ROM驱动器、CD/DVD刻录机支持相关CD刻录备份软件\n属于 ASPI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winaspi32.dll": "描述: winaspi32.dll是ASPI驱动相关文件用于控制CD-ROM驱动器、CD/DVD刻录机支持相关CD刻录备份软件\n属于 ASPI \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"window.dll": "描述: window.dll是Unreal游戏程序相关文件用于显示或者配置DirectX设置对话框。\n属于 Games Unreal \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wing.dll": "描述: wing.dll是Windows应用程序图形显示库文件用以取代DirectX。\n属于 Windows Graphics \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wing32.dll": "描述: wing32.dll是Windows应用程序图形显示库文件用以取代DirectX。\n属于 Windows Graphics \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wsock32n.dll": "描述: wsock32n.dl是SOCKS网络协议相关文件。\n属于 Windows Winsock \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"xmlparse.dll": "描述: xmlparse.dll是Yahoo!雅虎通即时通讯软件XML解释器文件。\n属于 Yahoo Messenger \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"xmltok.dll": "描述: xmltok.dll是XSLT引擎解码相关文件。\n属于 XSLT \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ygxa_2.dll": "描述: ygxa_2.dll是Yahoo!雅虎通即时通讯软件图形用户界面相关文件。\n属于 Yahoo Messenger \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"yml.dll": "描述: yml.dll是Yahoo!雅虎通应用程序相关库文件。\n属于 Yahoo Messenger \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"zlib.dll": "描述: zlib.dll是ZLIB压缩库相关文件用于Windows应用程序压缩和解压缩。\n属于 ZLIB \n系统 DLL文件 否 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"advapi32.dll": "描述: advapi32.dll是一个高级API应用程序接口服务库的一部分用于支持非常多的API应用程序接口包括安全和注册的调用。\n属于 Windows NT 4.0 \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"advpack.dll": "描述: advpack.dll用于帮助硬件和软件读取和验证.INF文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"asycfilt.dll": "描述: asycfilt.dll是Microsoft OLE (对象链接和嵌入)特性相关DLL文件。\n属于 OLE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"atl.dll": "描述: atl.dll文件用于支持ATL特性。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"avicap32.dll": "描述: avicap32.dll是Windows API应用程序接口相关模块用于对摄像头和其它视频硬件进行AVI电影和视频的截取。\n属于 Windows NT 4.0 \n系统 DLL文件 Yes \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"browseui.dll": "描述: browseui.dll用于浏览器UI界面的管理。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"comctl32.dll": "描述: comctl32.dll是Windows应用程序公用GUI图形用户界面模块。\n属于 Windows NT \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"comdlg32.dll": "描述: comdlg32.dll是Windows应用程序公用对话框模块用于例如打开文件对话框。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"commctrl.dll": "描述: commctrl.dll是Windows应用程序公用GUI图形用户界面模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"cpuinf32.dll": "描述: cpuinf32.dll是CPU信息获取相关模块用于获取例如CPU速度和CPU ID。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"crtdll.dll": "描述: crtdll.dll是标准C语言库用于例如打印机内存等。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"crypt32.dll": "描述: crypt32.dll是Windows加密API应用程序接口模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ctl3d.dll": "描述: ctl3d.dll是Windows应用程序公用GUI图形用户界面3D显示模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ctl3d32.dll": "描述: ctl3d32.dll是Windows应用程序公用GUI图形用户界面3D维显示模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"d3d8.dll": "描述: d3d8.dll是DirectX的3D显示部分控制模块在DirectX 8.0中被安装。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dbghelp.dll": "描述: dbghelp.dll是symbol引擎及相关模块用于Windows图形。\n属于 Windows Image \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ddeml.dll": "描述: ddeml.dll是exchange数据交换管理相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ddraw.dll": "描述: ddraw.dll是DirectX的DLL文件用于绘制多媒体应用程序的2D图形。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"devcon32.dll": "描述: devcon32.dll是设备配置管理动态链接库。用于提供COM库支持SoundFont和EFX特性。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dhcpcsvc.dll": "描述: dhcpcsvc.dll是Windows DHCP客户端服务模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dinput.dll": "描述: dinput.dll是DirectX的DLL文件用于支持DirectInput输入。该文件用于支持多媒体输入设备例如游戏手柄\n属于 DirectX DLL \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dinput8.dll": "描述: dinput.dll是DirectX的DLL文件用于DirectInput输入。该文件用于支持多媒体输入设备例如游戏手柄。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"dsound.dll": "描述: dsound.dll是DirectX的DLL文件用于支持Direct Sound声音特性。\n属于 DirectX \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"framedyn.dll": "描述: framedyn.dll是framework链接库文件\n属于 Windows WMI \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"fxscfgwz.dll": "描述: fxscfgwz.dll是Windows 2000传真配置相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"gdi32.dll": "描述: gdi32.dll是Windows GDI图形用户界面相关程序用于辅助创建组建。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"gdiplus.dll": "描述: gdiplus.dll是GDI图形设备接口图形界面相关模块。\n属于 Microsoft GDI+ \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"hal.dll": "描述: hal.dll是Windows硬件提取层模块该用于用于解决硬件的复杂性。\n属于 Microsoft Windows Operating System \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"icmp.dll": "描述: icmp.dll是Windows 2000产品相关模块用于网络ICMP请求。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iconlib.dll": "描述: iconlib.dll是微软Microsoft图标管理程序。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"imagehlp.dll": "描述: imagehlp.dll是Windows调试辅助动态链接库相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"inetmib1.dll": "描述: inetmib1.dll是Windows NT的简单网络管理协议SNMP相关模块。\n属于 Windows SNMP \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"iphlpapi.dll": "描述: iphlpapi.dll是Windows IP辅助API应用程序接口模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"kernel.dll": "描述: kernel.dll是在旧版本Windows操作系统中重要的一个DLL动态链接库文件。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ksuser.dll": "描述: ksuser.dll is a library which transports latency sensitive, time-stamped data between user perhiperals and system perhiperals\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mapi32.dll": "描述: mapi32.dll是Windows Messaging即时通讯软件API应用程序接口(MAPI)。\n属于 MAPI \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mgmtapi.dll": "描述: mgmtapi.dll是微软Microsoft简单网络管理应用程序接口API模块。\n属于 SNMP \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mmsystem.dll": "描述: mmsystem.dll是多媒体管理模块用于支持16位多媒体应用程序。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mpr.dll": "描述: mpr.dll是Windws操作系统网络通讯相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mprapi.dll": "描述: mprapi.dll是Windows 2000路由管理模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msacm32.dll": "描述: msacm32.dll是32位应用程序音频压缩模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msafd.dll": "描述: msafd.dll是微软Microsoft Windows操作系统 Sockets 2.0传输服务相关模块。\n属于 Windows Socket \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscomct2.dll": "描述: mscomct2.ocx是ActiveX插件公用管理模块。\n属于 Windows ActiveX \n系统 DLL文件 Yes \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"mscoree.dll": "描述: mscoree.dll是.NET Framework相关组件。\n属于 Microsoft .NET \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msgina.dll": "描述: msgina.dll是WIndows登陆认证策略相关模块。该模块用于完成所有用户登陆和验证功能。\n属于 GINA \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msi.dll": "描述: msi.dll是Windows安装程序MSI(Microsoft Installer)相关模块。\n属于 Windows Installer \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msimg32.dll": "描述: msimg32.dll是Windows图形设备接口GDI相关模块用于支持新的API应用程序接口和GDI32相关特性。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msjava.dll": "描述: msjava.dll是Java程序COM接口支持相关模块。\n属于 Microsoft JVM \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msnp32.dll": "描述: msnp32.dll是微软网络协议相关动态链接库。\n属于 Microsoft networks \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"msoss.dll": "描述: msoss.dll是Microsoft Trust ASN信任机制相关应用程序接口API模块用于加密和解密特性。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"netapi32.dll": "描述: netapi32.dll是Windows网络应用程序接口用于支持访问微软网络。\n属于 Microsoft network \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"newdev.dll": "描述: newdev.dll是添加系统新硬件设备相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ntdll.dll": "描述: ntdll.dll是NT操作系统重要的模块。\n属于 Windows NT \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"oc25.dll": "描述: oc25.dll是对象链接和嵌入OLE运行时模块。\n属于 Microsoft OLE Control runtime DLL \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ole2nls.dll": "描述: ole2.dll是对象链接和嵌入OLE相关模块用于支持多语言。\n属于 Microsoft OLE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ole32.dll": "描述: ole32.dll是对象链接和嵌入相关模块。\n属于 OLE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"olepro32.dll": "描述: olepro32.dll是对象链接和嵌入OLE特性相关模块。\n属于 Microsoft OLE Property Support DLL \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pidgen.dll": "描述: pidgen.dll是Windows操作系统重要的模块用于管理产品序列号。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"pjlmon.dll": "描述: pjlmon.dll是PJL打印机监视相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"powrprof.dll": "描述: powrprof.dll是微软Microsoft Windows电源管理配置工具相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"psapi.dll": "描述: psapi.dll是Windows系统进程状态支持模块。\n属于 Process Status Helper \n系统 DLL文件 Yes \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rasapi32.dll": "描述: rasapi32.dll是远程访问应用程序接口(RAS)用于Windows应用程序对调制解调器的控制。\n属于 Remote Access API \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"rpcrt4.dll": "描述: rpcrt4.dll是远程程序调用(RPC)应用程序接口API用于WIndows应用程序对网络和Internet连接。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"run32.dll": "描述: run32.dll 是应用程序DLL文件运行库相关模块。\n属于 Windows 95 \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"scrrun.dll": "描述: scrrun.dll用于阅读和编写脚本和文本文件。\n属于 Microsoft Script Runtime \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"secur32.dll": "描述: secur32.dll是Windows安全特性相关动态链接库。\n属于 Microsoft Windows DLL \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"setupx.dll": "描述: setupx.dll是WIndows安装程序相关模块。\n属于 Microsoft Windows Setup Functions \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shdoc401.dll": "描述: shdoc401.dll是资源管理器文件夹浏览的COM接口相关模块。\n属于 IE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shdoclc.dll": "描述: shdoclc.dll是为Windows应用程序添加基础文件和网络操作相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shdocvw.dll": "描述: shdocvw.dll是为Windows应用程序添加基础文件和网络操作相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shell32.dll": "描述: shell32.dll是Windows壳Shell相关应用程序接口动态链接库文件用于打开网页和文件。\n属于 Microsoft Windows Shell \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shfolder.dll": "描述: shfolder.dll是Windows特殊文件夹相关服务模块例如我的文档。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"shlwapi.dll": "描述: shlwapi.dll是UNC和URL地址动态链接库文件用于注册键值和色彩设置。\n属于 Microsoft Windows Shell \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"snmpapi.dll": "描述: snmpapi.dll是简单网络管理协议(SNMP)相关模块用于监视你的LAN局域网网络状态。\n属于 Microsoft SNMP \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"spoolss.dll": "描述: spoolss.dll是打印机打印相关模块。\n属于 Microsoft Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"svrapi.dll": "描述: svrapi.dll用于监视和管理共享网络资源。\n属于 Microsoft network \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"tapi32.dll": "描述: tapi32.dll是Windows排列层相关模块用于发送消息到Tapisrv.exe。\n属于 Windows Telephony \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"unidrv.dll": "描述: unidrv.dll是通用打印机驱动动态连接库。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"urlmon.dll": "描述: urlmon.dll是微软Microsoft对象链接和嵌入相关模块。\n属于 OLE \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"usbui.dll": "描述: usbui.dll是通用程序界面应用程序接口用于管理USB用户界面。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"user32.dll": "描述: user32.dll是Windows用户界面相关应用程序接口用于包括Windows处理基本用户界面等特性。\n属于 Windows User API \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"userenv.dll": "描述: userenv.dll是公用应用程序界面应用程序接口用于管理用户档案。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"vfwwdm32.dll": "描述: vfwwdm32.dll用于Windows应用程序视频进行WDM剪辑驱动相关程序。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"webcheck.dll": "描述: webcheck.dll是用于对网站进行监视的COM接口。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wininet.dll": "描述: wininet.dll是Windows应用程序网络相关模块。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winmm.dll": "描述: winmm.dll是Windows多媒体相关应用程序接口用于低档的音频和游戏手柄。\n属于 Windows Multimedia \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winsock.dll": "描述: winsock.dll是Windows Sockets应用程序接口用于支持很多Internet和网络相关应用程序。\n属于 Windows Sockets \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winsrv.dll": "描述: winsrv.dll是Windows服务用于支持32位用户和图形设备接口。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"winsta.dll": "描述: winsta.dll是成熟的Windows组件用于剪切板、全球区域特性和桌面组件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wintrust.dll": "描述: wintrust.dll用于验证第三方应用程序的文件目录内存使用数据签名等。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wmaudsdk.dll": "描述: wmaudsdk.dll用于读取、创建和获取.WMA音频格式文件信息。\n属于 Windows Media \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wmvcore.dll": "描述: wmvcore.dll是Windows媒体视频回放解码相关动态链接库。\n属于 Windows Media \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wnaspi32.dll": "描述: wnaspi32.dll是高级Advanced SCSI程序接口( ASPI )管理相关文件。\n属于 Windows \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ws2_32.dll": "描述: ws2_32.dll是Windows Sockets应用程序接口用于支持Internet和网络应用程序。\n属于 Windows Sockets \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"ws2help.dll": "描述: ws2help.dll是Windows Sockets应用程序接口用于支持Internet和网络应用程序。\n属于 Windows Sockets \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary",
"wsock32.dll": "描述: wsock32.dll是Windows Sockets应用程序接口用于支持很多Internet和网络应用程序。\n属于 Windows Sockets \n系统 DLL文件 是 \n常见错误 File Not Found, Missing File, Exception \n\n资料来源https://www.2cto.com/shouce/system/dlllibrary"
}

View File

@ -1,137 +0,0 @@
import os
import sys
import json
import traceback
import subprocess
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../")
from Model import *
finding = False
def ReadNeedDll(lists):
nmodel = QtGui.QStandardItemModel(window)
if not len(lists):
item = QtGui.QStandardItem("")
nmodel.appendRow(item)
for i in lists:
item = QtGui.QStandardItem(i)
nmodel.appendRow(item)
needDllList.setModel(nmodel)
def ReadBadNeedDll(lists):
global finding
nmodel = QtGui.QStandardItemModel(window)
if not len(lists):
item = QtGui.QStandardItem("")
nmodel.appendRow(item)
for i in lists:
item = QtGui.QStandardItem(i)
nmodel.appendRow(item)
badDllList.setModel(nmodel)
finding = True
def ErrorMsg(message):
QtWidgets.QMessageBox.critical(window, "错误", message)
class ReadDll(QtCore.QThread):
readNeed = QtCore.pyqtSignal(list)
readBad = QtCore.pyqtSignal(list)
error = QtCore.pyqtSignal(str)
def __init__(self) -> None:
super().__init__()
def run(self):
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
try:
output = subprocess.getoutput(f"python3 '{programPath}/CheckCommand.py' '{sys.argv[1]}' --json")
print(output)
self.readNeed.emit(json.loads(output))
except:
traceback.print_exc()
self.error.emit(traceback.format_exc())
try:
badoutput = subprocess.getoutput(f"python3 '{programPath}/CheckCommand.py' '{sys.argv[1]}' --json -w '{sys.argv[2]}' '{sys.argv[3]}'")
print(badoutput)
self.readBad.emit(json.loads(badoutput))
except:
traceback.print_exc()
self.error.emit(traceback.format_exc())
def GetDll():
global read
read = ReadDll()
read.readNeed.connect(ReadNeedDll)
read.readBad.connect(ReadBadNeedDll)
read.error.connect(ErrorMsg)
read.start()
def Change():
if not finding:
return
things = badDllList.selectionModel().selectedIndexes()[0].data().lower()
repairButton.setEnabled(os.path.exists(f"{programPath}/bash/{things}.sh"))
findButton.setEnabled(True)
def FindDll():
global dllMap
things = badDllList.selectionModel().selectedIndexes()[0].data().lower()
try:
dllMap["check"]
except:
try:
with open(f"{programPath}/lists.json", "r") as file:
dllMap = json.loads(file.read())
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
return
try:
QtWidgets.QMessageBox.information(window, f"关于“{things}", dllMap[things])
except:
QtWidgets.QMessageBox.information(window, f"关于“{things}", "无此 Dll 的信息")
def RepairDll():
things = badDllList.selectionModel().selectedIndexes()[0].data().lower()
OpenTerminal(f"'{programPath}/../AutoShell/main.py' '{programPath}/bash/{things}.sh'")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/../deepin-wine-runner.svg".format(programPath)
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget()
layout = QtWidgets.QGridLayout()
badDllList = QtWidgets.QListView()
needDllList = QtWidgets.QListView()
badDllList.clicked.connect(Change)
findButton = QtWidgets.QPushButton("查询此 Dll 信息")
repairButton = QtWidgets.QPushButton("修复此 Dll")
findButton.setDisabled(True)
repairButton.setDisabled(True)
findButton.clicked.connect(FindDll)
repairButton.clicked.connect(RepairDll)
badDllList.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
needDllList.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
loadingTips = QtGui.QStandardItemModel(window)
loadingTipsItem = QtGui.QStandardItem("正在读取……")
loadingTips.appendRow(loadingTipsItem)
badDllList.setModel(loadingTips)
needDllList.setModel(loadingTips)
layout.addWidget(QtWidgets.QLabel("程序需要的 Dll(不太准)"), 0, 0, 1, 1)
layout.addWidget(QtWidgets.QLabel("程序缺失的 Dll(不太准)"), 0, 1, 1, 2)
layout.addWidget(needDllList, 1, 0)
layout.addWidget(badDllList, 1, 1, 1, 2)
layout.addWidget(findButton, 2, 1)
layout.addWidget(repairButton, 2, 2)
widget.setLayout(layout)
window.setCentralWidget(widget)
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
window.setWindowTitle(f"查看程序“{os.path.basename(sys.argv[1])}”缺少的 DLL")
window.resize(int(window.frameGeometry().width() * 1.2), int(window.frameGeometry().height() * 1.1))
GetDll()
window.show()
app.exec_()

View File

@ -1,46 +0,0 @@
{
"installdll": "安装指定 dll 在指定容器\n参数数量1\n参数介绍dll名称或在从互联网获取DLL工具的编号如 7012 xolehlp.dll 平台2003 架构64 的 7012",
"stopdll": "不允许指定 dll/exe 运行\n参数数量1\n参数介绍dll/exe 名称,如 example.exe",
"installfont": "安装指定字体到指定容器\n参数数量1\n在字体商店的编号如 5 msyhbd.ttc 的 5",
"installsparkcorefont": "安装星火应用商店的“微软核心字体”\n参数数量0\n参数介绍无",
"installmono": "安装最新版本的 mono 到指定容器\n参数数量0\n参数介绍无",
"installgecko": "安装最新版本的 gecko 到指定容器\n参数数量0\n参数介绍无",
"installvcpp": "安装指定的 VCPP 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Studio C++ 工具的编号,如 10 Visual Studio C++ 2015、2017、2019 和 2022 X64 的 10",
"installnet": "安装指定的 .net framework 运行库到指定容器\n参数数量1\n参数介绍在安装 .net framework 工具的编号,如 3 .net framework 4.5.1 Offline Installer 的 3",
"installmsxml": "安装指定的 MSXML 运行库到指定容器\n参数数量1\n参数介绍在安装 MSXML 工具的编号,如 1、MSXML 4.0 SP3 的 1",
"echo": "显示内容\n参数数量≥1\n参数介绍接要显示的内容",
"info": "显示提示对话框\n参数数量2\n参数介绍标题+显示内容",
"error": "显示错误对话框\n参数数量2\n参数介绍标题+显示内容",
"warning": "显示警告对话框\n参数数量2\n参数介绍标题+显示内容",
"exit": "退出程序\n参数数量0\n参数介绍无",
"bat": "执行 cmd 命令在 Wine 容器内(在 Windows 将在系统执行命令)\n参数数量≥1\n参数介绍接要执行的命令",
"bash": "执行 bash 命令(在 Windows 系统将执行 cmd 命令)\n参数数量≥1\n参数介绍接要执行的命令",
"version": "显示解释器版本Wine 运行器版本)\n参数数量0\n参数介绍无",
"thank": "显示谢明列表\n参数数量0\n参数介绍无",
"pause": "按回车键后继续\n参数数量0\n参数介绍无",
"download": "使用 aria2 下载文件\n参数数量≥1 && ≤3\n参数介绍下载URL+保存在的文件夹+保存的文件名",
"installdxvk": "安装 dxvk 到指定容器\n参数数量0\n参数介绍无",
"createbotton": "在指定目录创建容器\n参数数量0\n参数介绍无",
"reg": "导入 .reg 文件\n参数数量0\n参数介绍reg 文件路径",
"enabledopengl": "开启 OpenGL\n参数数量0\n参数介绍无",
"disbledopengl": "关闭 OpenGL\n参数数量0\n参数介绍无",
"winecfg": "显示“Wine 设置”\n参数数量0\n参数介绍无",
"winver": "显示“关于 Wine”\n参数数量0\n参数介绍无",
"changeversion": "更改 Wine 容器系统版本(未实现)\n参数数量无\n参数介绍无",
"cat": "显示指定文件只支持显示编码为UTF-8的文件\n参数数量1\n参数介绍无",
"enabledhttpproxy": "设置指定容器代理\n参数数量2\n参数介绍代理服务器地址+端口",
"disbledhttpproxy": "禁用指定容器代理\n参数数量0\n参数介绍无",
"enabledwinecrashdialog": "启用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledwinecrashdialog": "禁用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledWinebottlecreatelink": "禁止 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"enabledWinebottlecreatelink": "允许 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"killall": "杀死指定进程\n参数数量1\n参数介绍进程名",
"control": "打开控制面板\n参数数量0\n参数介绍无",
"taskmgr": "打开任务管理器\n参数数量0\n参数介绍无",
"killallwineserver": "杀死所有 Wine 程序\n参数数量0\n参数介绍无",
"installvb": "安装指定的 VB 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6",
"installother": "安装未归类的运行库到指定容器\n参数数量1\n参数介绍在安装其它运行库工具的编号如 2 MFC运行库",
"decompressionbottle": "解压用 wine 打包的 deb 包内的容器到指定路径\n参数数量2\n参数介绍deb 包路径+要解压到的路径",
"programforum": "打开程序论坛\n参数数量0\n参数介绍无",
"installmsi": "安装 MSI 文件到指定容器\n参数数量1\n参数介绍msi 文件路径"
}

View File

@ -1,675 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本3.0.1
# 更新时间2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
import os
import sys
import time
import json
import random
import updatekiller
# 阉割 Android 应用安装功能
#import uengineapi
import platform
import traceback
import webbrowser
import subprocess
import PyQt5.QtWidgets as QtWidgets
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
thankText = ""
helpList = json.loads(readtxt(f"{programPath}/ConfigLanguareRunner-help.json"))
for i in information["Thank"]:
thankText += f"{i}\n"
programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
#["($DANGER)", "0"],
["($DANGER)", "1"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "RacoonGX 团队By gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi"],
["($?)", "0"],
["($PLATFORM)", platform.system()],
["($DEBUG)", "1"]
#["($DEBUG)", str(int("--debug" in sys.argv))]
]
readOnlyEnv = [
"($DANGER)",
"($HOME)",
"($PROGRAMPATH)",
"($VERSION)",
"($THANK)",
"($MAKER)",
"($COPYRIGHT)",
"($?)",
"($SYSTEM)",
"($DEBUG)"
]
def FindFile(file, name):
for i in os.listdir(file):
path = f"{file}/{i}"
if os.path.isdir(path):
returnPath = FindFile(path, name)
if returnPath != None:
return returnPath.replace("//", "/")
if os.path.isfile(path):
if i == name:
return path
return None
def Debug():
if "--debug" in sys.argv:
traceback.print_exc()
class Command():
# 有风险的命令
dangerCommand = [
"bash",
"bat",
"download",
"reg"
]
# 可以被使用的命令
commandList = [
"installdll",
"installfont",
"installsparkcorefont",
"installmono",
"installgecko",
"installvcpp",
"installnet",
"installmsxml",
"echo",
"info",
"error",
"warning",
"exit",
"bash",
"bat",
"version",
"thank",
"pause",
"download",
"installdxvk",
"createbotton",
"reg",
"enabledopengl",
"disbledopengl",
"winecfg",
"winver",
"changeversion",
"stopdll",
"cat",
"taskmgr",
"control",
"killall",
"killallwineserver",
"enabledhttpproxy",
"disbledhttpproxy",
"enabledwinecrashdialog",
"disbledwinecrashdialog",
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink",
"installvb",
"installother",
"decompressionbottle",
"programforum",
"installmsi",
"installapk"
]
def __init__(self, commandString: str) -> None:
self.commandString = commandString
# 解析器
# 命令字符串转可供解析的列表
def GetCommandList(self) -> list:
shellList = []
shellFirstShell = self.commandString.split("\n")
# 转换成可以执行的数组
for l in range(0, len(shellFirstShell)):
i = shellFirstShell[l]
# 判断有没有注释
if "#" in i:
# 忽略注释
i = i[:i.index("#")]
# 删除前后空格
i = i.strip()
# 如果是空行
if i == "":
# 忽略此行,此行不做处理
continue
# 空格转义
i = i.replace("\\ ", "@Space@")
# 解析
i = i.split()
# 判断是否为合法的参数,否则提示并忽略
if not i[0] in self.commandList and i[0][0] != "(":
print(f"{l + 1}命令{i[0]}不存在,忽略")
programEnv[9][1] = "-2"
continue
if programEnv[2][1] == "0" and i[0] in self.dangerCommand:
print(f"{l + 1}命令{i[0]}目前解析器不允许运行,忽略")
print("如果需要运行可以在配置面板开启“允许修改系统”选项针对GUI用户")
print("或添加参数 --system终端调用运行用户")
programEnv[9][1] = "-1"
continue
rightList = []
for k in i:
# 处理符号转义
rightList.append(k.replace("@Space@", " ").replace("\\n", "\n").replace("\\r", "\r"))
shellList.append(rightList)
return shellList
# 运行器
class Run():
close = False
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
def Exit(self):
self.close = True
return 0
def InstallDll(self) -> int:
import InstallDll
# 如果是数字
number = False
try:
int(self.command[1])
number = True
except:
pass
if number:
return InstallDll.Download(self.wineBottonPath, InstallDll.GetNameByNumber(int(self.command[1])), InstallDll.GetUrlByNumber(int(self.command[1])), self.wine)
return InstallDll.Download(self.wineBottonPath, self.command[1], InstallDll.GetUrlByName(self.command[1]), self.wine)
def InstallDxvk(self):
if not os.path.exists(f"{programPath}/dxvk"):
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
print("错误:无法解压资源")
return 1
os.remove(f"{programPath}/dxvk.7z")
return os.system(f"env 'WINE={self.wine}' 'WINE64={self.wine}' 'WINEPREFIX={self.wineBottonPath}' bash '{programPath}/dxvk/auto.sh' install")
def Thank(self) -> int:
for i in information["Thank"]:
print(i)
return 0
def InstallFont(self) -> int:
import InstallFont
return InstallFont.Download(self.wineBottonPath, int(self.command[1]))
def InstallMono(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' mono")
def InstallGecko(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' gecko")
def InstallVCPP(self) -> int:
import InstallVisualCPlusPlus
return InstallVisualCPlusPlus.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallNet(self) -> int:
import InstallNetFramework
return InstallNetFramework.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallMsxml(self) -> int:
import InstallMsxml
return InstallMsxml.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def Info(self) -> int:
QtWidgets.QMessageBox.information(None, self.command[1], self.command[2])
return 0
def StopDll(self) -> int:
return os.system(f"WINEPREFIX='{self.wineBottonPath}' '{self.wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(self.command[1])[0]} /f")
def CreateBotton(self):
self.command = ["bat", "exit"]
self.Bat()
return 0
def InstallSparkCoreFont(self):
if not os.system("which aptss"):
# 最新版本星火应用商店处理
os.system("pkexec bash aptss ssupdate")
return os.system("pkexec bash aptss install ms-core-fonts")
if not os.system("which ss-apt-fast"):
# 稍久的版本
os.system("pkexec ss-apt-fast update")
return os.system("pkexec bash ss-apt-fast install ms-core-fonts")
# 不知道什么版本的处理方法
if not os.system("which apt-fast"):
# 稍久的版本
os.system("pkexec apt-fast update")
return os.system("pkexec apt-fast install ms-core-fonts")
os.system("pkexec apt update")
return os.system("pkexec apt install ms-core-fonts")
def Echo(self) -> int:
del self.command[0]
print(" ".join(self.command))
return 0
def Warning(self):
QtWidgets.QMessageBox.warning(None, self.command[1], self.command[2])
return 0
def Error(self):
QtWidgets.QMessageBox.critical(None, self.command[1], self.command[2])
return 0
def Bash(self):
command = ""
for i in self.command[1:]:
command += f"'{i}' "
return os.system(command)
def Bat(self) -> int:
# Windows 直接转换为以 cmd 运行
if platform.system() == "Windows":
# 直接调用 Bash 函数
return self.Bash()
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
for i in self.command[1:]:
command.append(i)
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def Version(self):
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi")
return 0
def Pause(self) -> int:
input("按回车键继续……")
return 0
def Download(self) -> int:
command = f"aria2c -x 16 -s 16 -c '{self.command[1]}' "
try:
command += f"-d '{self.command[2]}' "
command += f"-o '{self.command[3]}' "
except:
pass
return os.system(command)
def Reg(self) -> int:
self.command = ["bat", "regedit", "/s", self.command[1]]
return self.Bat()
def EnabledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/EnabledOpengl.reg"]
return self.Reg()
def DisbledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/DisabledOpengl.reg"]
return self.Reg()
def Winver(self):
self.command = ["bat", "winver"]
return self.Bat()
def Winecfg(self):
self.command = ["bat", "winecfg"]
return self.Bat()
def ChangeVersion(self):
# 判断是否为正确的版本
if not os.path.exists(f"{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"):
print("错误:您选择的版本错误,目前只支持以下版本")
for i in os.listdir(f"{programPath}/ChangeWineBottonVersion"):
print(i.replace(".reg", ""), end=" ")
print()
return 1
self.command = ["reg", f"z:/{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"]
return self.Reg()
def Cat(self):
try:
file = open(self.command[1], "r")
print(file.read())
file.close()
return 0
except:
print("文件读取错误")
Debug()
return 1
def Taskmgr(self):
self.command = ["bat", "taskmgr"]
return self.Bat()
def Control(self):
self.command = ["bat", "control"]
return self.Bat()
def Killall(self):
return os.system(f"killall -9 {self.command[1]}")
def KillallWineServer(self):
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)", "-k"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
if "box86" in command[1] or "exagear" in command[1] or "box64" in command[1]:
print("不支持此 Wine")
return 1
if os.path.exists(command[1]):
# 文件存在
command[1] = f"{os.path.dirname(command[1])}/wineserver"
else:
# 读 which
command[1] = f"{os.path.dirname(subprocess.getoutput(f'which {command[1]}').strip())}/wineserver"
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def EnabledWineBottleCreateLink(self):
self.command = ["bat", "reg", "delete", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
return self.Bat()
def DisbledWineBottleCreateLink(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
return self.Bat()
def DisbledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000000", "/f"]
return self.Bat()
def EnabledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000001", "/f"]
return self.Bat()
def EnabledHttpProxy(self):
proxyServerAddress = self.command[1]
port = self.command[2]
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"]
return self.Bat()
def DecompressionBottle(self):
tempDebDir = f"/tmp/wine-runner-unpack-deb-{random.randint(0, 1000)}"
if os.system(f"dpkg -x '{self.command[1]}' '{tempDebDir}'"):
return 1
zippath = FindFile(tempDebDir, "files.7z")
if zippath == None:
return 2
# 解压文件
os.system(f"mkdir -p '{self.command[2]}'")
fi = os.system(f"7z x -y '{zippath}' -o'{self.command[2]}'")
os.system(f"rm -rfv '{tempDebDir}'")
return fi
def DisbledHttpProxy(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
return self.Bat()
def InstallVB(self):
import InstallVisualBasicRuntime
return InstallVisualBasicRuntime.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallOther(self):
import InstallOther
return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def ProgramForum(self):
webbrowser.open_new_tab("https://gfdgdxi.flarum.cloud/")
return
def InstallMSI(self):
self.command = ["bat", "msiexec", "/i", self.command[1]]
return self.Bat()
def InstallApk(self):
if os.system("which uengine > /dev/null"):
print("未安装 UEngine无法使用该命令")
return 1
apk = uengineapi.APK(self.command[1])
result = apk.install()
homePath = os.getenv("HOME")
if not os.path.exists(f"{homePath}/.local/share/applications/uengine"):
os.makedirs(f"{homePath}/.local/share/applications/uengine")
if not os.path.exists(f"{homePath}/.local/share/icons/hicolor/apps"):
os.makedirs(f"{homePath}/.local/share/icons/hicolor/apps")
package = apk.packageName()
apk.saveApkIcon(f"{homePath}/.local/share/icons/hicolor/apps/{package}.png")
apk.saveDesktopFile(f"{homePath}/.local/share/applications/uengine/{package}.desktop", f"{homePath}/.local/share/icons/hicolor/apps/{package}.png")
return result
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
commandList = {
"installdll": InstallDll,
"installfont": InstallFont,
"installsparkcorefont": InstallSparkCoreFont,
"installmono": InstallMono,
"installgecko": InstallGecko,
"installvcpp": InstallVCPP,
"installnet": InstallNet,
"installmsxml": InstallMsxml,
"echo": Echo,
"info": Info,
"warning": Warning,
"error": Error,
"exit": Exit,
"bash": Bash,
"bat": Bat,
"version": Version,
"thank": Thank,
"pause": Pause,
"download": Download,
"installdxvk": InstallDxvk,
"createbotton": CreateBotton,
"reg": Reg,
"enabledopengl": EnabledOpenGl,
"disbledopengl": DisbledOpenGl,
"winecfg": Winecfg,
"winver": Winver,
"changeversion": ChangeVersion,
"stopdll": StopDll,
"cat": Cat,
"taskmgr": Taskmgr,
"control": Control,
"killallwineserver": KillallWineServer,
"enabledhttpproxy": EnabledHttpProxy,
"disbledhttpproxy": DisbledHttpProxy,
"enabledwinecrashdialog": EnabledWineCrashDialog,
"disbledwinecrashdialog": DisbledWineCrashDialog,
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB,
"installother": InstallOther,
"decompressionbottle": DecompressionBottle,
"programforum": ProgramForum,
"installmsi": InstallMSI,
"installapk": InstallApk
}
# 参数数列表
commandInfo = {
"killall": [1],
"installdll": [1],
"installfont": [1],
"installsparkcorefont": [0],
"installmono": [0],
"installgecko": [0],
"installvcpp": [1],
"installnet": [1],
"installmsxml": [1],
"echo": [1],
"info": [2],
"warning": [2],
"error": [2],
"exit": [0],
"bash": [1],
"bat": [1],
"version": [0],
"thank": [0],
"pause": [0],
"download": [1],
"installdxvk": [0],
"createbotton": [0],
"reg": [1],
"enabledopengl": [0],
"disbledopengl": [0],
"winecfg": [0],
"winver": [0],
"changeversion": [1],
"stopdll": [1],
"cat": [1],
"taskmgr": [0],
"control": [0],
"killallwineserver": [0],
"enabledhttpproxy": [2],
"disbledhttpproxy": [0],
"enabledwinecrashdialog": [0],
"disbledwinecrashdialog": [0],
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0],
"installvb": [1],
"installother": [1],
"decompressionbottle": [2],
"programforum": [0],
"installmsi": [1],
"installapk": [1]
}
windowsUnrun = [
"createbotton",
"installdll",
"installmono",
"installgecko",
"winecfg",
"stopdll",
"changeversion",
"enabledopengl",
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont",
"decompressionbottle",
"installapk"
]
# 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
self.wineBottonPath = wineBottonPath
self.wine = wine
for i in command:
self.command = i
# 变量解析
if self.command[0][0] == "(" and "=" in self.command[0]:
env = i[0][: i[0].index("=")]
value = i[0][i[0].index("=") + 1:]
# 判断是不是只读变量
if env in readOnlyEnv:
print(f"运行命令{' '.join(self.command)}出现错误")
print(f"变量 {env} 只读,无法修改,忽略")
continue
change = False
for k in range(len(programEnv)):
# 修改变量
if env == programEnv[k][0]:
programEnv[k][1] = value
change = True
break
if not change:
# 添加变量
programEnv.append([f"{env}", value])
continue
# 解析命令是否可以在 Windows 使用(只限在 Windows 系统时)
if platform.system() == "Windows" and i[0] in self.windowsUnrun:
print("此命令不支持在 Windows 上运行")
programEnv[9][1] = "-5"
continue
# 获取程序帮助信息
try:
if i[1] == "--help":
print(helpList[i[0]].replace("\\n", "\n"))
continue
except:
pass
# 正常命令解析
if len(i) -1 < self.commandInfo[i[0]][0]:
print("参数不足")
programEnv[9][1] = "-3"
continue
# 替换环境变量
for a in range(1, len(i)):
for b in programEnv:
if b[0] in i[a]:
i[a] = i[a].replace(b[0], b[1])
try:
commandReturn = self.commandList[i[0]](self)
except:
traceback.print_exc()
commandReturn = 1
if commandReturn:
print(f"运行命令{' '.join(self.command)}出现错误,返回值:", commandReturn)
programEnv[9][1] = str(commandReturn)
if self.close:
break
app = QtWidgets.QApplication(sys.argv)
if os.getenv("WINE") != None:
programEnv[1][1] = os.getenv("WINE")
if os.getenv("WINEPREFIX") != None:
programEnv[0][1] = os.getenv("WINEPREFIX")
if __name__ == "__main__":
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv[2][1] = "1"
optionAll += 1
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi")
print("--------------------------------------------------------------")
while True:
commandLine = input(">")
if commandLine == "exit":
break
com = Command(commandLine)
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))
# 读取文件
try:
file = open(sys.argv[1], "r")
com = Command(file.read())
file.close()
except:
print("错误:无法读取该文件,无法继续")
sys.exit(1)
print("Wine 运行器自动配置文件解析器")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))

View File

@ -1,5 +0,0 @@
#!/usr/bin/env python3
import sys
import base64
import requests
print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9JbnN0YWxsLnBocD9WZXJzaW9uPQ==").decode("utf-8") + sys.argv[1]).text)

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="BadStar.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="2.1794989"
inkscape:cy="208.04937"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.16628225"
inkscape:transform-center-y="-3.3924633"
style="fill:none;stroke-width:11.54627375;stroke:#000000;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.22402028,0,0,0.234398,-5.3781204e-6,227.3838)" />
<path
style="fill:none;stroke:#db0000;stroke-width:4.17411947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.6835638,237.71432 60.365607,288.71648"
id="path4588"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

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